4

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

getSupportActionBar().setDisplayShowHomeEnabled(true);

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

“方法调用可能产生 java.lang.nullpointerexception”。

应该用什么代替getSupportActionBar()

4

4 回答 4

13
getSupportActionBar().setDisplayShowHomeEnabled(true);

应该说

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

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

于 2015-04-27T15:08:06.083 回答
2

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

        getDelegate().getSupportActionBar().setDisplayHomeAsUpEnabled(true);
于 2015-05-04T21:57:45.570 回答
1

If you're extending a Theme.AppCompat which has an action bar or have called setSupportActionBar(...) yourself, calling getSupportActionBar() is safe.

To get around the warning do a null check or

assert getSupportActionBar() != null;

which will throw an exception if the expression is not true. Both have their uses.

于 2015-04-27T15:13:49.823 回答
1

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

于 2015-06-30T21:40:18.567 回答