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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Fragments [duplicate]中调用时,为getSupportActionBar()抑制NPE警告相关的知识,希望对你有一定的参考价值。

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

我在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);

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

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

以上是关于在Fragments [duplicate]中调用时,为getSupportActionBar()抑制NPE警告的主要内容,如果未能解决你的问题,请参考以下文章

Fragments - 指定的孩子已经有一个父母。您必须先在孩子的父母上调用 removeView()

Fragments 中的“onViewStateRestored”如何工作?

OnCreateView 多次调用/使用 ActionBar 和 Fragments

Android11.5 创建和管理Fragments

TabLayout 加载 Fragments 但其 BottomNavigationView 未显示在底部

setUserVisibleHint with Fragments for android