在片段内部调用时抑制 getSupportActionBar() 的 NPE 警告

Suppress NPE Warning for getSupportActionBar() when called inside Fragments

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

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

我该如何解决这个问题?

因为您没有检查 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);
        }
    }

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

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

使用工具栏是首选。如果使用 Toolbar 并设置 Actionbar,则无需检查 NullPointerException。

  1. 可能的原因是,如果您试图在 Activity 上下文之外执行此操作,您将得到 NullpointerException。它必须在 Activity 上下文中设置。

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