2012-03-01 65 views
2

我正在開發一個由頂級TabActivity組成的Android 2.3.3應用程序。我還加入了一些標籤的TabHost的編程,並給予每一個獨立的子活動:在TabHost中關閉/重新啓動活動

intent = new Intent().setClass(this, MyFirstActivity.class); 
spec = tabHost.newTabSpec(...).setIndicator(...).setContent(intent); 
tabHost.addTab(spec); 

intent = new Intent().setClass(this, MySecondActivity.class); 
spec = tabHost.newTabSpec(...).setIndicator(...).setContent(intent); 
tabHost.addTab(spec); 

的事件在我的應用程序的其他地方發生,並響應我要重新創建所有選項卡活動。要做到這一點,我打電話給getTabHost()。clearAllTabs(),雖然它從標籤中刪除它看起來並沒有真正殺死活動。如果我再次運行上面的代碼,現有的活動將簡單地添加回到它們的選項卡,並且它們繼續像以前一樣運行。

當我創建意圖時,是否需要設置標誌或其他東西,以便它們可以正確關閉並重新創建?或者,有沒有其他方式讓孩子活動告訴他們何時從父級TabActivity中移除?

回答

1

您可以通過設置標誌重新啓動活動。代碼如下。

spec = tabHost .newTabSpec("tab1") 
        .setIndicator("FirstActivity") 
        .setContent(new Intent(this,MyFirstActivity.class) 
        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); 
    tabHost.addTab(spec); 
+0

謝謝拉朱。我確實在文檔中看到過這個標誌,但我完全誤解了它的用途。出於某種原因,我認爲它清除了整個活動堆棧。謝謝您的幫助! – 2012-03-01 22:50:51

+1

歡迎馬克。 – 2012-03-02 06:05:56