2013-05-08 75 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。在调试中崩溃时解决它,并且不会再为空。