2012-07-24 122 views
3

我有一個包含五個選項卡的活動。當我從標籤1到標籤2或標籤3時,一切看起來都不錯。我怎樣才能從標籤2到標籤1以編程方式返回?安卓選項卡活動轉到上一個選項卡

Intent myIntent = new Intent(this, Tab1.class);    
    myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(myIntent); 

這不能正常工作,因爲它啓動沒有任何選項卡的活動1。

當從標籤1到標籤2時,我可以看到標籤1和標籤2(當前標籤已激活)。但是當從標籤2到標籤1時,標籤1和標籤2從活動中消失。什麼會造成這種情況?

+0

檢查http://stackoverflow.com/questions/3871681/android-how-to-change-activity-within-一個標籤。 – jeet 2012-07-24 12:25:16

+0

看到這個[鏈接](http://stackoverflow.com/questions/4307235/tabhost-obtaining-previous-tab-after-a-tab-change)可能相同的問題 – Archana 2012-07-24 12:32:15

回答

1

剛使用結束()方法

public void onClick(View v) 
{        
    finish(); 
    startActivity(new Intent(Activity2.this, Activity1.class));    
}  
+0

當回到上一個活動的標籤菜單消失 – 2012-07-24 12:23:36

2

這一定會幫助你。

TabHost tabHost = (TabHost) getParent().findViewById(android.R.id.tabhost); 
tabHost.setCurrentTab(1); 

或者您也可以參考此鏈接

How to programmatically switch tabs using buttonclick in Android

謝謝:)

+0

我從活動2去activity1.你是什麼張貼? – 2012-07-24 12:22:16

+0

您的活動必須是TabActivity ..如果您想以編程方式在tab2Activity和tab1Activity之間導航,請使用我的代碼。謝謝:) – SALMAN 2012-07-24 12:24:06

+0

@Angela如果我的回答可以幫助你,請不要忘記接受我的回答,並投票給我,我將非常感謝。感謝:) – SALMAN 2012-07-24 12:36:13

0

我不知道的Intent.FLAG_ACTIVITY_CLEAR_TOP,從來沒有需要,但提到失去你的標籤的效果是p通過從您的TabHost呼叫startActivity(),而不是您的標籤之一。如果是這種情況,請將通話移至該處,並保留標籤。

0

我有類似的情況,但似乎沒有答案的幫助。所以,我在這裏發佈我的解決方案:

// tab selection history, each tab has a tag which is a string 
private List<String> tabIdHistory = new ArrayList<String>(); 

@Override 
protected void onCreate(Bundle savedInstance) { 
    super.onCreate(savedInstanceState); 
    // this layout contains TabHost and TabWidget 
    setContentView(R.layout.activity_main); 

    TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost); 
    tabHost.setup(); 
    tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() { 

     @Override 
     public void onTabChanged(String tabId) { 
      tabIdHistory.remove(tabId); // ensure uniqueness 
      tabIdHistory.add(tabId); 
     } 
    }); 
    // continue your tab initialisation, such as 
    // tabHost.addTab(tabHost.newTabSpec(TAG) 
    //   .setContent(...).setIndicator(...)); 
} 

@Override 
public void onBackPressed() { 
    if (tabIdHistory.size() > 1) { 
     // pop the current last item, we want the second last 
     tabIdHistory.remove(tabIdHistory.size() - 1); 
     tabHost.setCurrentTabByTag(tabIdHistory.get(tabIdHistory.size() - 1)); 
    } else { 
     super.onBackPressed(); 
    } 
} 

如果使用選擇標籤#,標籤#3,標籤#,標籤#1,然後返回堆疊是 「3,2,1」,應用程序將退出如果用戶按下三次後退按鈕,則進入主屏幕。如果你想保留完整的歷史記錄,註釋掉該行:

tabIdHistory.remove(tabId);