在Fragments [duplicate]中调用时,为getSupportActionBar()抑制NPE警告

问题描述 投票:-11回答:2

这个问题在这里已有答案:

我在setDisplayHomeAsUpEnabled方法下面得到一个NullPointerException警告。

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

我该如何解决?

android android-actionbar
2个回答
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);
        }
    }

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


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

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

  1. 可能的原因是如果您尝试从活动上下文中执行此操作,您将获得NullpointerException。它必须在Activity Context中设置。
  2. 检查您的清单文件,如果您已将主题设置为NoActionBar并尝试访问Actionbar,请将其更改为Apptheme。
© www.soinside.com 2019 - 2024. All rights reserved.