为什么我的TabListener不起作用?

时间:2014-03-31 18:04:52

标签: java android tabs

我想在我的应用中实现制表符和tablistener。

    public class MyActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        ActionBar.Tab tabA = actionBar.newTab();
        tabA.setText("Tab A");
        tabA.setTabListener(new TabListener<Tab1>(this, "Tag A", Tab1.class));
        actionBar.addTab(tabA);

        Tab tabB = actionBar.newTab();
        tabB.setText("Tab B");
        tabB.setTabListener(new TabListener<Tab2>(this, "Tag B", Tab2.class));
        actionBar.addTab(tabB);

        Tab tabC = actionBar.newTab();
        tabC.setText("Tab C");
        tabC.setTabListener(new TabListener<Tab3>(this, "Tag C", Tab3.class));
        actionBar.addTab(tabC);

        if (savedInstanceState != null) {
            int savedIndex = savedInstanceState.getInt("SAVED_INDEX");
            getActionBar().setSelectedNavigationItem(savedIndex);
        }

    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        // TODO Auto-generated method stub
        super.onSaveInstanceState(outState);
        outState.putInt("SAVED_INDEX", getActionBar().getSelectedNavigationIndex());
    }

}

但我从这一行得到一个NullPointerException:

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

有人可以告诉我为什么以及该怎么做?

如果需要,我将添加其他类和StackTrace。

2 个答案:

答案 0 :(得分:2)

getActionBar()返回null。如果您应用了非操作栏主题,请检查清单。如果是这样,则更改主题,以便活动具有actiobar。

  

public ActionBar getActionBar()

     

在API级别11中添加检索对此活动的引用&#39; s   动作条。

     

返回Activity的ActionBar,如果没有

,则返回null

答案 1 :(得分:1)

您使用的是哪个主题?检查Manifest中的主题是否为Theme.NoTitleBar。如果是这样,请将其更改为Theme.Holo。