在Fragments中调用时,禁止getSupportActionBar()的NPE警告

时间:2018-02-28 09:52:14

标签: android android-actionbar

我在setDisplayHomeAsUpEnabled方法下面收到NullPointerException 警告

if((getActivity()) != null) {
   if(((AppCompatActivity) getActivity()).getSupportActionBar() != null) {
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false);
  }
 }

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

因为您没有对NullPointerException进行检查 ((AppCompatActivity)getActivity())。getSupportActionBar()给出actionbar对象

但你直接通过

打电话

((AppCompatActivity)getActivity())。getSupportActionBar()。setDisplayHomeAsUpEnabled(false)

这就是系统为NullPointerException提供警告的原因。

    if((getActivity()) != null) {
        ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
        if(actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(false);
        }
    }

上面的代码。您的警告将被删除。

答案 1 :(得分:0)

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);

使用工具栏是首选。如果您使用工具栏并设置动作栏,则无需为NullPointerException设置chekc。

  1. 可能的原因是如果您尝试从活动上下文中执行此操作,您将获得NullpointerException。它必须在活动上下文中设置。

  2. 检查您的清单文件,如果您已将主题设置为NoActionBar并尝试访问操作栏,请将其更改为Apptheme。