在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。
- 可能的原因是如果您尝试从活动上下文中执行此操作,您将获得NullpointerException。它必须在Activity Context中设置。
- 检查您的清单文件,如果您已将主题设置为NoActionBar并尝试访问Actionbar,请将其更改为Apptheme。
以上是关于在Fragments [duplicate]中调用时,为getSupportActionBar()抑制NPE警告的主要内容,如果未能解决你的问题,请参考以下文章
Fragments - 指定的孩子已经有一个父母。您必须先在孩子的父母上调用 removeView()
Fragments 中的“onViewStateRestored”如何工作?
OnCreateView 多次调用/使用 ActionBar 和 Fragments