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

时间:2017-08-02 17:01:19

标签: android

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

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

2 个答案:

答案 0 :(得分:1)

这两种方法都有效。

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

比if-else语句链更快,更易读。

答案 1 :(得分:1)

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

我也更喜欢使用switch而不是if-else