代码之家  ›  专栏  ›  技术社区  ›  Apper

在片段内调用时抑制getSupportActionBar()的NPE警告[重复]

  •  -11
  • Apper  · 技术社区  · 7 年前

    我得到一个NullPointerException 警告 位于以下位置 setDisplayHomeAsUpEnabled 方法

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

    如何修复此问题?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Community CDub    4 年前

    因为你没有检查NullPointerException ((AppCompatActivity)getActivity()。getSupportActionBar() 提供actionbar对象

    但你直接打电话

    ((AppCompatActivity)getActivity()。getSupportActionBar()。setDisplayHomeAsUpEnabled(假)

    这就是为什么系统会对NullPointerException发出警告。

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

    输入上述代码。您的警告将被删除。

        2
  •  0
  •   Akshay    7 年前
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(false);
    

    使用工具栏是首选。如果使用工具栏并设置Actionbar,则无需检查kc中是否存在NullPointerException。

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

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