我有这样的问题,我想听听变量的变化。让我们看一下,我已经初始化了var foo:Int = 10,在代码的某个地方,它将它的值更改为其他值,让我们取foo = 99,这里是我在kotlin中的代码片段。
var foo:Int=10
private val changeSupport: PropertyChangeSupport? = PropertyChangeSupport(foo)
val observer = {
property: KProperty<*>,
oldValue: Int?,
newValue: Int? -> changeSupport!!.firePropertyChange(property.name, oldValue, newValue)
}
var oof: Int? by Delegates.observable(foo, observer)
changeSupport!!.addPropertyChangeListener { event ->
Log.d("loggg","Property [${event.propertyName}] changed " + "from [${event.oldValue}] to [${event.newValue}]")
}因此,当我在代码中编写foo = 99时,我必须接收日志。我试了很多东西,但没有成功。我是不是遗漏了什么?
http://kotlination.com/kotlin/kotlin-observable-property-delegated-property https://www.javalobby.org/java/forums/t19476.html
发布于 2018-05-03 20:56:21
所以解决办法就像我想的那样简单。首先,我必须为变量赋值,并进行委托,并且可以观察到这样的情况。
var foo:Int? by Delegates.observable(10) { property, oldValue, newValue ->
Log.d("loggg","gggol")
}每次我调用foo=something时,它都会记录以下输出。谢谢。)
发布于 2018-05-02 22:06:55
您正在尝试为属性PropertyChangeSupport提供foo而不是包含属性foo的实例。
例如,PropertyChangeSupport(this)。文档
https://stackoverflow.com/questions/50142942
复制相似问题