无法在onTouchListener之外分配值

时间:2019-08-16 15:53:38

标签: android kotlin

当按下一个项目时,我想修改在onCreate方法之外声明的值。但是当按下该项目时,onTouchListener会执行其他功能,除了修改该值。我试图编写相同的指令来修改onTouchListener方法外部的值,并且它起作用了。这是我的代码:

class MainActivity : AppCompatActivity() {

    var ciao: String? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        var listenerUser = View.OnTouchListener(function = { view, motionEvent ->

            if (motionEvent.action == MotionEvent.ACTION_DOWN) {

                this.ciao = "ciao"

            }

            true

        })
    }

    override fun onResume() {
        super.onResume()

        if (ciao != null) {
            println(ciao!!)
        }

    }
}

当我的应用程序恢复运行时,var ciao为null,但是如果我将this.ciao = "ciao"放在侦听器之外,则var不为null。

1 个答案:

答案 0 :(得分:0)

您需要为应该做出反应的视图设置OnTouchListener

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val listener = View.OnTouchListener(function = {view, motionEvent ->
        if (motionEvent.action == MotionEvent.ACTION_DOWN) {
            this.ciao = "ciao"
        }
        true
    })
    clickedView.setOnTouchListener(listener)
}

如果您只想检测点击,则最好使用OnClickListener,如下所示:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    clickedView.setOnClickListener(_ ->
        this.ciao = "ciao"
    )
}