首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getSupportActionBar() NullPointerException

getSupportActionBar() NullPointerException
EN

Stack Overflow用户
提问于 2015-11-29 12:44:02
回答 5查看 6.7K关注 0票数 3

onCreate()活动方法中,我为ToolBar编写了以下代码

代码语言:javascript
复制
toolbar = (Toolbar) findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

我的IDE使我感到温暖,因为getSupportActionBar().setDisplayHomeAsUpEnabled(true);可能会产生getSupportActionBar().setDisplayHomeAsUpEnabled(true);

,我的问题是,我是否应该忽略它,我怎样才能解决它呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-11-29 12:46:58

IDE警告您一个潜在的NullPointerException,因为有许多情况下,应用程序可以抛出一个。例如,您可以为整个NoActionBar主题使用Application (或仅针对关注的activity),但仍然试图使用getActionBar() (或getSupportActionBar())检索对操作栏的引用。

只需忽略警告,但请记住上面的注释。

更新:

通过显式检查是否为空,可以消除警告:

代码语言:javascript
复制
toolbar = (Toolbar) findViewById(R.id.tool_bar);
if (toolbar != null) {
    // you can safely invoke methods on the Toolbar
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} else {
    // Toolbar is null, handle it
}
票数 6
EN

Stack Overflow用户

发布于 2015-11-29 12:46:15

您可以检查null,但如果它没有崩溃,则不应该是必需的:

代码语言:javascript
复制
if(getSupportActionBar() != null) {
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
票数 2
EN

Stack Overflow用户

发布于 2015-11-29 13:04:05

两个答案都是正确的,但是如果你只想删除警告

代码语言:javascript
复制
ActionBar actionBar = getSupportActionBar();

assert actionBar != null;

actionBar.setDisplayHomeAsUpEnabled(true);

断言actionBar != null,表示ActionBar不是null,因此对该变量调用任何方法都不会产生NullPointerException的警告。

我想如果你

代码语言:javascript
复制
assert getSupportActionBar() != null

但我不确定。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33982892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档