2017-08-15 57 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")添加到該方法。

在註釋上方添加註釋可以解釋爲什麼抑制警告是一種好的做法。