【发布时间】:2018-05-02 20:20:35
【问题描述】:
我有这种问题,我想听听变量的变化。
让我初始化 var foo:Int = 10 并在代码中的某个地方将其值更改为其他值让 foo = 99 这是我在 kotlin 中的代码 sn-p。
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 时,我必须接收日志。我尝试了很多我关注这篇文章的东西,但没有成功。
我错过了什么吗?
How to create change listener for variable?
http://kotlination.com/kotlin/kotlin-observable-property-delegated-property https://www.javalobby.org/java/forums/t19476.html
【问题讨论】:
-
属性监听器作用于属性,这些属性与变量并不完全相同。它们有(特殊的,通常是隐式的)方法来包装其值的访问和变异:正是这些访问器和变异器方法用于实现属性监听器。如果您想使用属性侦听器来侦听变量的更改,则必须确保您的变量是一个属性。也就是说,它是类的成员,而不是方法或类似方法的本地成员。你的问题不清楚:它已经是一个属性了吗?
-
不,它是一个简单的变量,它会在应用程序运行时更改值,然后如果值从 A 更改为 Z,例如我必须显示一些 Toast。我怎样才能让它发挥作用?
标签: variables kotlin delegates observable