首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PropertyChangeSupport获得变量更改的通知(例如,可观察的、委托的)

使用PropertyChangeSupport获得变量更改的通知(例如,可观察的、委托的)
EN

Stack Overflow用户
提问于 2018-05-02 20:20:35
回答 2查看 4.5K关注 0票数 2

我有这样的问题,我想听听变量的变化。让我们看一下,我已经初始化了var foo:Int = 10,在代码的某个地方,它将它的值更改为其他值,让我们取foo = 99,这里是我在kotlin中的代码片段。

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-03 20:56:21

所以解决办法就像我想的那样简单。首先,我必须为变量赋值,并进行委托,并且可以观察到这样的情况。

代码语言:javascript
复制
 var foo:Int? by Delegates.observable(10) { property, oldValue, newValue ->

            Log.d("loggg","gggol")

        }

每次我调用foo=something时,它都会记录以下输出。谢谢。)

票数 8
EN

Stack Overflow用户

发布于 2018-05-02 22:06:55

您正在尝试为属性PropertyChangeSupport提供foo而不是包含属性foo的实例。

例如,PropertyChangeSupport(this)文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50142942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档