2011-09-26 26 views
5

感謝您檢查我的詢問!Android - onTabChanged不會在選擇不同的選項卡時被調用

我已經實現了一個標籤環境,如下圖所示。它似乎符合我的預期,除了它從不執行onTabChanged方法。我發現了幾篇關於這種情況的文章,但一直沒能讓我的代碼按照我的預期工作。建議嗎?

感謝, 芯片

public class TestTabActivity extends TabActivity implements OnTabChangeListener { 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Resources res = getResources(); // Resource object to get Drawables 
    TabHost tabHost = getTabHost(); // The activity TabHost 
    TabHost.TabSpec spec; // Resusable TabSpec for each tab 
    Intent intent; // Reusable Intent for each tab 

    intent = new Intent().setClass(this, Page1Activity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    spec = tabHost.newTabSpec("page1").setIndicator("Page 1", 
         res.getDrawable(R.drawable.ic_tab_page1)) 
        .setContent(intent); 
    tabHost.addTab(spec); 

    intent = new Intent().setClass(this, Page2Activity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    spec = tabHost.newTabSpec("page2").setIndicator("Page 2", 
         res.getDrawable(R.drawable.ic_tab_page2)) 
        .setContent(intent); 
    tabHost.addTab(spec); 

    intent = new Intent().setClass(this, Page2Activity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    spec = tabHost.newTabSpec("page3").setIndicator("Page 3", 
         res.getDrawable(R.drawable.ic_tab_page3)) 
        .setContent(intent); 
    tabHost.addTab(spec); 

    tabHost.setCurrentTab(0); 
} 

public void onTabChanged(String tabId) { 
    Log.d("Tab Changed", "Changed a Tab"); 
} 
} 

回答

13

我沒有看到您註冊類與tabHost.setOnTabChangeListener(this)一個標籤的變化。

我建議這樣做tabHost.setCurrentTab(0)之前。

即使不在第一組選項卡上調用,也可以在onCreate的末尾手動調用onTabChanged("page1")

還是我誤解了你的問題?

+1

謝謝你Knickedi!我失明瞭,但現在我明白了。 –

相關問題