2017-08-02 51 views
1

我有onClick方法,例如,在Activity中。为什么处理这种方式是一个不好的方法?为什么在onClick方法中使用R.id.buttonX而不是将视图与存在按钮进行比较?

@Override 
public void onClick(final View v) { 
    if (v == mBtnGo || v == mBtnBack) { 
     handleActionClick(); 
    } else if (v == mBtnNext) { 
     handleNextClick(); 
    } 
} 

应该使用这样的逻辑:

@Override 
public void onClick(final View v) { 
    switch (v.getId()) { 
     case R.id.btn_go: 
     case R.id.btn_back: 
      handleActionClick(); 
      break; 
     case R.id.btn_next: 
      handleNextClick(); 
      break; 
     default: 
      break; 
    } 
} 
+0

开关盒比的if-else快得多。 –

+0

错误。 switch和if之间没有性能差异。编辑:我可能是错的,你说得对,Bruno:https://stackoverflow.com/a/8748981/507339。这就是说,在这种情况下,你只有两种情况,差别是可以忽略的 – Nilzor

回答

1

这两种方法会奏效。

当多次点击处理单onClick()方法中 第二种方法可以让你使用switch语句,

比if-else语句链更快,更具可读性。

1

有时我们不需要保留View的引用。我们只是想为喜欢点击注册事件:findViewById(R.id.button).setOnClickListener()

而且我也更喜欢使用开关代替的if-else

相关问题