【发布时间】:2017-12-23 10:42:46
【问题描述】:
我想让我的MainActivity 知道自定义View 有一些事情要做(例如计算东西)。 View 通过触摸检测用户输入,而 MainActivity 必须使用来自这些 View-Values 的计算来更新某些用户控件。基本上我对onTouchEvent做了一个覆盖:
override fun onTouchEvent(event: MotionEvent?): Boolean {
val x = event?.x
val y = event?.y
val dX = x?.minus(prevX)
val dY = y?.minus(prevY)
if(dX!! > 0){
lowerBound = x.toInt()
} else{
upperBound = x.toInt()
}
prevX = x!!.toInt()
prevY = y!!.toInt()
this.invalidate() //tell view to redraw
return true
}
如何让MainActivity知道lowerBound和upperBound更新了?
【问题讨论】:
-
不确定您要实现什么目标,但直接从您的视图开始一项新活动可能不是最好的方法。我能想到的第一件事 - 您可以创建一个侦听器并将其从持有活动传递到您的视图。之后只需通过您的意图将所需的值传递给另一个活动。
-
我不想开始一个新的活动,我只想让当前的 MainUI Acitivty 知道它必须计算东西并更新 UI 控件。
-
那么定义监听器有什么不好呢?
-
直到现在我才知道监听器 - 我会看看它。
-
我认为您可以简单地将边界保留为活动中的字段,并在活动中定义一个私有方法
onBoundsUpdated(upperBound,lowerBound),并将边界与字段进行比较(如果它们已更改)并执行您想做的任何事情你的活动。