Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java getSupportActionBar()NullPointerException_Java_Android_Nullpointerexception_Android Actionbar_Android Toolbar - Fatal编程技术网

Java getSupportActionBar()NullPointerException

Java getSupportActionBar()NullPointerException,java,android,nullpointerexception,android-actionbar,android-toolbar,Java,Android,Nullpointerexception,Android Actionbar,Android Toolbar,在活动的onCreate()方法中,我有工具栏的以下代码: toolbar = (Toolbar) findViewById(R.id.tool_bar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); 我的IDE让我感觉到getSupportActionBar().setDisplayHomeAsUpEnabled(true)可能会产生空点异常 我的问题是我是否应该忽略

在活动的
onCreate()
方法中,我有
工具栏的以下代码:

toolbar = (Toolbar) findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
我的IDE让我感觉到
getSupportActionBar().setDisplayHomeAsUpEnabled(true)可能会产生空点异常


我的问题是我是否应该忽略它,以及如何修复它?

您可以检查null,但如果它没有崩溃,则不必:

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

IDE警告您可能出现
NullPointerException
,因为在很多情况下,应用程序可能会抛出一个异常。例如,您可以为整个
应用程序
(或仅为相关的
活动
)使用NoActionBar主题,但仍然尝试使用
getActionBar()
(或
getSupportActionBar()
)检索对操作栏的引用

忽略警告,但记住上面的注释

更新:

您可以通过显式检查可空性来消除警告:

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
}

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

ActionBar actionBar = getSupportActionBar();

assert actionBar != null;

actionBar.setDisplayHomeAsUpEnabled(true);
断言操作栏!=null,表示ActionBar不是null,因此对该变量调用任何方法都不会产生NullPointerException警告

我想如果你能

assert getSupportActionBar() != null

但我不确定这一点。

首先给出了从NullPointerException中转义的答案,在代码中加入以下内容后:-

if(getSupportActionBar() != null) {
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
只解决异常问题,然后你也不会得到你的工具栏空只。 我想说的是,只要签入你的活动xml,不管你是否声明了你的工具栏,我想这会重新喜欢你的问题

  <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar1"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />


只需将工具栏放入活动Xml。

如果工具栏位于包含布局中,我们需要使用包含标记的id,而不是工具栏标记

<include  
android:id="@+id/toolbar_include"/>


<!--/**toolbar_include.xml*/-->

<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"/>

你知道NullPointerException是什么吗?你在使用哪个工具栏,你在使用支持工具栏吗???@VirajNalawade他在询问Android Studio发出的警告。这与实际错误无关。IDE只是警告你,伙计:)IDE不会产生
nullPointerException
@Bhargav support.v7.widget.toolbar我正在使用getWindow().setFlags(WindowManager.LayoutParams.FLAG\u LAYOUT\u NO\u LIMITS,WindowManager.LayoutParams.FLAG\u LAYOUT\u NO\u LIMITS);为了得到全屏长度,我想这就是我得到这个nullPointerException的原因。是否有任何方法可以在不删除上述代码的情况下摆脱这种情况。
 Toolbar toolbar=findViewById(R.id.toolbar_include);