【问题标题】:Android marker: onTouch should call View#performClick when a click is detectedAndroid 标记:当检测到点击时,onTouch 应该调用 View#performClick
【发布时间】:2014-08-19 18:57:17
【问题描述】:

我有一个功能代码,但在上次 SDK 更新后,我收到了以下警告:

此行有多个标记
- 当检测到点击时,onTouch 应该调用 View#performClick
- 实现 android.view.View.OnTouchListener.onTouch

med.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            detect.setEnabled(false);
        }
        if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) {
            detect.setEnabled(true);
        }
        //v.performClick();
        Log.e("next", "touch");
        return false;
    }
});

med.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        if(!center) {
            send("1");
        } else {
            send("2");
        }
        Vibrate(100);
        Log.e("next","click");
    }
});

我的代码运行正常,但如果我取消注释 v.performClick();删除警告我得到不需要的行为。为什么我会收到此警告,如果我将其丢弃并保留代码原样,是否会出现一些问题?

编辑:

这是我点击按钮时的日志:
"next", "touch"
“下一个”、“触摸”
“下一步”、“点击”

这是使用 v.performClick()
"next", "click"
“下一个”、“触摸”
“下一步”、“点击”
“下一个”、“触摸”

“下一步”、“点击”

【问题讨论】:

    标签: android warnings lint


    【解决方案1】:

    你应该把

    v.performClick();
    

    第二个如果:

    if (event.getAction() == MotionEvent.ACTION_UP ....) {
        v.performClick();
        detect.setEnabled(false);
    }
    

    【讨论】:

    • @lenooh 你能解释一下为什么你建议将 v.performClick() 放在第二个之后,如果使用 ACTION_UP 而不是 ACTION_DOWN?
    • AJW:那是很久以前的事了,我现在不记得了。试试这两个版本,看看哪个适合你。
    猜你喜欢
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    相关资源
    最近更新 更多