在库22中使用什么而不是getSupportActionBar()?

时间:2015-04-27 15:03:50

标签: android toolbar appcompatactivity

我的代码中有一行标记为黄色:

getSupportActionBar().setDisplayShowHomeEnabled(true);

安装 appcompat-v7:22.1 后,它会显示一条提示:

  

"方法调用可能会产生java.lang.nullpointerexception"。

应该使用什么代替getSupportActionBar()

4 个答案:

答案 0 :(得分:13)

getSupportActionBar().setDisplayShowHomeEnabled(true);

应该说

if (getSupportActionBar() != null)
{
   getSupportActionBar().setDisplayShowHomeEnabled(true);
}

getSupportActionBar()可以返回null,以便提示告诉你这个。

答案 1 :(得分:2)

我找到了另一种方法,使用 AppCompatDelegate

        getDelegate().getSupportActionBar().setDisplayHomeAsUpEnabled(true);

答案 2 :(得分:1)

如果您要延长Theme.AppCompat,其中包含操作栏或已自行致电setSupportActionBar(...),则可以安全地致电getSupportActionBar()

要绕过警告,请执行空检查或

assert getSupportActionBar() != null;

如果表达式不为真,将抛出异常。两者都有它们的用途。

答案 3 :(得分:1)

在样式中使用NoActionBar?验证您的style.xml或主题if("NoActionBar") => nullpointer =D