当按下一个项目时,我想修改在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。
答案 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"
)
}