2010-03-03 91 views
5

安卓第一個選項卡intent oncreate始終調用以下是帶有意向數據的選項卡示例。無論我們將tab2設置爲默認選項卡

在調試,我發現總是先當標籤,我們在我們的情況下標籤在標籤主機添加

tabHost.addTab(tabHost.newTabSpec("tab1") 
        .setIndicator("list") 
        .setContent(new Intent(this, List1.class))); 

的「列表1」的意圖onCreate方法被調用,無論是我們當前標籤頁或不即使如果我將tab2定義爲當前選項卡如何解決此問題?

public class Tabs3 extends TabActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     final TabHost tabHost = getTabHost(); 

     tabHost.addTab(tabHost.newTabSpec("tab1") 
       .setIndicator("list") 
       .setContent(new Intent(this, List1.class))); 

     tabHost.addTab(tabHost.newTabSpec("tab2") 
       .setIndicator("photo list") 
       .setContent(new Intent(this, List8.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))); 

     // This tab sets the intent flag so that it is recreated each time 
     // the tab is clicked. 
     tabHost.addTab(tabHost.newTabSpec("tab3") 
       .setIndicator("destroy") 
       .setContent(new Intent(this, Controls2.class) 
         .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))); 
    } 
} 
+0

所以,你要添加的所有標籤,但比第一片其他的東西可以在默認情況下選中,你不想在List1活動,直到你可以創建點擊標籤? – synic 2010-03-03 19:42:45

+0

是的你是對的。 – 2010-03-04 05:10:35

回答

1

setDefaultTab(1);

當單獨的活動用作Tab內容時,TabActivity似乎不起作用。以下代替這種方法

使用,

tabHost.setCurrentTab(1);

這將設置「照片列表」(即第二個選項卡)作爲選擇或默認選項卡...

+2

我有同樣的問題,並沒有這不起作用。它確實設置了選定的選項卡,但無論如何,第一個選項卡的onCreate都會被調用。 – typeoneerror 2011-02-13 01:50:03

+0

同樣的錯誤在這裏,當前標籤的作品,但第一個標籤oncreate仍然被稱爲。 – rnaud 2011-02-14 13:25:19

0

我發現這個相同的行爲爲好,我沒有具體的修復。但我知道一個解決方法。

不是將活動附加到每個選項卡,而是將視圖附加到每個選項卡。然後,您可以非常輕鬆地處理數據傳遞,因爲每個視圖都在同一個活動中。這也消除了使用Intents來傳遞信息的需要。此外,您可以根據需要創建(或擴充)視圖,並擁有更多控制權。

祝你好運, 斯科特