1. 程式人生 > >Pro Android學習筆記(五一) ActionBar(4) 標準和Tab模式

Pro Android學習筆記(五一) ActionBar(4) 標準和Tab模式

之前,我們學習的Action Bar是標準模式,Tab模式的如下圖所示。

對於Tab,我們在Android學習筆記(二二): 多頁顯示-Tag的使用中學習過,但Action Bar的tab更適合fragment的使用。我們在之前實現的標準Action Bar的基礎上新增導航用的tab,程式碼如下:

public class TabbedActionBarDemo extends SearchTestCase3 implements ActionBar.TabListener{
    @Override
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState);
        workWithTabbedActionBar();
    }
    private void workWithTabbedActionBar(){
        ActionBar bar = getActionBar();
        bar.setTitle("Tabbed action bar"); //可以修改在AndroidManifest.xml中設定的action bar的title

        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //預設為ActionBar.NAVIGATION_MODE_STANDARD,即標準模式。在標準模式下,是不呈現Tab出來的。

        ActionTab.Tab tab1 = bar.newTab();
        tab1.setText("Tab1");
        tab1.setTabListener(this);  //如果我們忘了新增setTabListener(),在執行時會異常,設定null也不行。
        bar.addTab(tab1);

       bar.addTab(bar.newTab()
                           .setText("Tab2") 
                           .setTabListener(this));

    }

    @Override //ActionBar.TabListener介面,在已選擇的基礎上,再次選擇的回撥函式
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
        showInfo(tab.getText() + " onTabReselected() is called");       
    }

    @Override //ActionBar.TabListener介面,選擇tab的回撥函式。目前為Tab1,當用戶選擇tab2時,先觸發tab1的onTabUnselected(),再觸發tab2的onTableSelected()

    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        showInfo(tab.getText() + " onTabSelected() is called");      
    }

    @Override //ActionBar.TabListener介面,不再選擇(選擇其他)的回撥函式
    public void onTabUnselected(Tab tab, FragmentTransaction ft)
        showInfo(tab.getText() + " onTabUnselected() is called");
    } 
       
}

ActionBar.Tab很適合用於fragment,在不同的fragment中切換,此時,具體實現ActionBar.TabListener的可能就是Fragment的繼承類。