我的代码中有一行标记为黄色:
getSupportActionBar().setDisplayShowHomeEnabled(true);
安装 appcompat-v7:22.1 后,它会显示一条提示:
"方法调用可能会产生java.lang.nullpointerexception"。
应该使用什么代替getSupportActionBar()
?
答案 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