【问题标题】:Why doesn't my TabListener work?为什么我的 TabListener 不起作用?
【发布时间】:2014-03-31 18:04:52
【问题描述】:

我想在我的应用中实现标签和 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。

【问题讨论】:

  • manifest 中应用的主题是什么?

标签: java android tabs


【解决方案1】:

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

公共ActionBar getActionBar()

在 API 级别 11 中添加检索对此活动的引用 操作栏。

返回 Activity 的 ActionBar,如果没有则返回 null

【讨论】:

  • 你的意思是这段代码吗? 我尝试删除.NoTitleBar,但之后我的应用程序仍然崩溃并且我得到相同的空指针异常
  • @user2051194 android:theme="@android:style/Theme.Black.NoTitleBar" 是问题所在。应用具有活动操作栏的主题
【解决方案2】:

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

【讨论】:

  • 改成 Theme.Holo 后就可以使用了 非常感谢! :)
  • 这个主题可以隐藏应用名称+图标吗?
  • @user2051194 是的,在操作栏中隐藏图标和标题。 stackoverflow.com/questions/5720715/…
  • 欢迎您。使用这个方法:actionBar.setDisplayShowTitleEnabled(false); actionBar.setDisplayShowHomeEnabled(false);
猜你喜欢
  • 2015-09-25
  • 2018-03-05
  • 2013-04-19
  • 2015-10-17
  • 2016-02-20
  • 2023-04-03
  • 2012-01-07
  • 2012-06-11
  • 2015-08-26
相关资源
最近更新 更多