方法调用' setTitle'可能会产生' java.lang.NullpointerException'

时间:2017-12-09 05:43:50

标签: android android-actionbar

我尝试使用以下代码为ActionBar设置标题:

@Override
public void onResume() {
    ((MainActivity) getActivity()).getSupportActionBar().setTitle(getResources().getString(R.string.artist));
    super.onResume();
}

但是Android Studio向我显示了这个警告:

Error warning

我在StackOverflow上搜索它将通过在我的代码前添加此代码if(getSupportActionBar()!=null)来修复。但它导致我的脚本出错。 我不知道如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

您可以按照自己的意愿进行选择:

1-忽略警告

无需进一步说明,这不是错误

2-优雅的解决方案

在行中添加“ if”语句,以确保其不为空

if(getSupportActionBar() != null) {
        getSupportActionBar().setTitle(getString(R.string.artist));
}

3-使用断言

assert getSupportActionBar() != null;
getSupportActionBar().setTitle(getString(R.string.artist));

4-移动警告

如果您在多个位置使用“ getSupportActionBar”,则可以删除所有这些警告,作为回报,您只会收到有关@NonNull用法的警告。

@NonNull
@Override
public ActionBar getSupportActionBar() {
    return super.getSupportActionBar();
}

答案 1 :(得分:-1)

使用

setTitle(CharSequence text);

因此,如果您想在ActionBar至" Hello world"中设置文字。你会做的

setText("Hello world);

setText(R.string.hello_world);