为什么它在onClick方法中使用R.id.buttonX而不是将视图与存在按钮进行比较?



例如,我在Activity中有onClick方法。为什么以这种方式处理是不好的?

@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;
}
}

这两种方法都可以。

在单个onClick((方法中处理多次点击时 第二种方法允许您使用 switch 语句,

这比一连串的 if-else 语句更快、更具可读性。

有时我们不需要保留视图的引用。我们只想注册点击事件,例如:findViewById(R.id.button).setOnClickListener()

而且我也更喜欢使用开关而不是if-else

最新更新