2017-08-15 56 views
1

在单击工具栏后退箭头后,在操作栏中向后箭头定义FLAG_ACTIVITY_NO_ANIMATION以纠正动画,然后返回警告。摆脱此警告的最佳方法是什么?声明'FLAG_ACTIVITY_NO_ANIMATION'后出现NullPointerException警告

方法调用 '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); 
} 
+1

无论是抑制还是'null'检查意图。 –

+0

根据警告,意图可能为空。除此之外,你是不是错过了'getParentActivityIntent'的一些方法参数? –

回答

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); 
} 
0

getParentActivityIntent的DOC:

@返回:一个新的意图靶向如果 没有有效的父级,则为null。只有当没有父Activity,所以他们标志着@Nullable注释返回值

此方法返回null。这就是为什么你会收到警告。

如果您确定已经在清单中定义了父级Activity,则不必担心NullPointerException,您可以禁止此警告。

要压制,您必须将@SuppressWarnings("ConstantConditions")添加到该方法。

在注释上方添加注释可以解释为什么抑制警告是一种好的做法。