声明' FLAG_ACTIVITY_NO_ANIMATION'后出现NullPointerException警告

时间:2017-08-15 14:49:44

标签: java android android-intent android-optionsmenu

在操作栏中为后退箭头定义FLAG_ACTIVITY_NO_ANIMATION以在单击工具栏后退箭头时更正动画后,将返回警告。摆脱这种警告的最佳方法是什么?

  

方法调用' addFlags'可能会产生' java.lang.NullPointerException'

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
        final Intent intent = getParentActivityIntent();
        intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
        onBackPressed();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

2 个答案:

答案 0 :(得分:1)

将其包装成if intent!= null。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
        final Intent intent = getParentActivityIntent();
        if(intent != null){
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
        }else{
          //Do some error handling.
        }
        onBackPressed();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

答案 1 :(得分:0)

来自getParentActivityIntent

的文档
  

@return:一个新的Intent,定位此活动的已定义父级,如果是,则为null   没有有效的父母。

只有在没有父Activity的情况下,此方法才会返回null,因此它们会为返回值标记@Nullable注释。这就是你收到警告的原因。

如果您确定已在清单中定义了父Activity,则无需担心NullPointerException,您可以取消此警告。

要禁止,您必须向方法添加@SuppressWarnings("ConstantConditions")

最好在注释上方添加注释,说明您为何禁止警告。