【问题标题】:Android kotlin onTouchListener wants me to override performClick()Android kotlin onTouchListener 想让我覆盖 performClick()
【发布时间】:2017-09-12 08:21:50
【问题描述】:

我正在尝试消除 Android Studio 希望我的 onTouchListener 覆盖 performClick 的警告,但警告仍然存在。

draggableBar!!.setOnTouchListener(View.OnTouchListener { view, motionEvent ->
    when (motionEvent.getAction()) {
        MotionEvent.ACTION_DOWN -> {

        }
        MotionEvent.ACTION_UP -> {
            view.performClick()
        }
    }

    return@OnTouchListener true
})

这可能是 Android Studio 错误还是我做错了什么?

【问题讨论】:

  • 也许 IDE 的困惑是因为它不知道传入的视图是您的 draggableBar 实例。您是否尝试过使用 draggableBar!!.performClick() 代替?
  • 您能否为您的实现提供更多背景信息?请添加 Android Studio 打印的错误。

标签: android android-studio kotlin


【解决方案1】:

好的,我有同样的问题,但我通过覆盖 onTouch 侦听器解决了它。

默认的onTouch要我们重写performClick(),但是即使通过view.performClick()调用方法也不起作用。

因此,像这样覆盖您的 onTouch:

override fun onTouch(view: View, motionEvent: MotionEvent): Boolean {
    when (view) {
        draggableBar -> {
            when (motionEvent.getAction()) {
                MotionEvent.ACTION_DOWN -> {

                }
                MotionEvent.ACTION_UP -> {
                    view.performClick()
                }
            }
        }
        otherButtonHere -> {
            //your welcome
        }
    }

    return true
}

这样,您可以在所有可点击的视图中使用单个 onTouch()。

别忘了在你的类中实现:

View.OnTouchListener

并设置监听器:

draggableBar!!.setOnTouchListener(this)

希望对您有所帮助! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 2020-10-29
    相关资源
    最近更新 更多