2013-05-08 43 views
0

我通常創建initialize()函數和函數來設置點擊式偵聽器,然後從Activity的onCreate()中調用這些函數。當我在函數中調用someView.setOnClickListener(...)時,是否應該檢查someView == null是否?我知道,它!= null,但我需要一個關於編碼風格的建議。最佳做法是什麼?
下面是一個例子:在設置onClickListener之前檢查View == null

... 
public class SomeActivity extends Activity 
{ 
    private ImageButton someButton; 
    private Intent someIntent; 

    public void onCreate(Bundle icicle) 
    { 
     super.onCreate(icicle); 
     setContentView(R.layout.add_alarm);   
     initialize(); 
     setSomeButtonHandler(); 
    } 

    public void initialize() 
    { 
     someButton = (ImageButton) findViewById(R.id.someButton); 
    } 

    public void setSomeButtonHandler() 
    { 
     if(someButton != null) //Should I check this? 
     { 
      someIntent = new Intent(SomeActivity.this, SomeButtonActivity.class); 
      someButton.setOnClickListener(new View.OnClickListener() 
      { 
       public void onClick(View v) 
       { 
        startActivity(someIntent); 
       } 
      }); 
     } 
    } 
} 
+0

不,你不這樣做,刪除那些爲了可讀性。 – 2013-05-08 09:27:59

+1

無需檢查! – 2013-05-08 09:28:05

回答

2

一旦setContentView()被調用,你將永遠不會得到一個空視圖中提供您正在尋找在正確的佈局和視圖存在於該佈局。

如果您要通過傳遞錯誤的ID來查找視圖,或者正在尋找它在不同的佈局中(如對話框或其他),您將只會得到空值。

所以,如果你設計好你的應用程序並在編碼時記住所有這些,你就不需要這些空檢查。我個人從未使用過他們兩年以上的Android工作,因此沒有任何問題。

0

您可以使用空檢查進行測試。 findViewByID方法未找到任何視圖時將返回null。例如,如果您使用錯誤的身份證或任何機會嘗試訪問setContentView之前的孩子。

所以,如果你確信你已經做好了一切,那麼不需要檢查。但是,如果有錯誤的任何機會,你可以用它來測試

if(buttton == null) 
    show a warning 
else 
    do work 
1

不,你並不需要這種全面的檢查。

如果findViewById返回null,它最好會導致應用程序崩潰,因爲這意味着您沒有使用正確的XML或ID。在調試中崩潰時解決它,並且不會再爲空。

相關問題