【问题标题】:Java for Android - how to create event listener for boolean variableJava for Android - 如何为布尔变量创建事件监听器
【发布时间】:2012-04-03 20:34:41
【问题描述】:

我正在使用 Java 创建一个 android 应用程序。我有一个名为“运动”的布尔变量。我想创建一个在“运动”值发生变化时触发的事件。任何指向正确方向的指针都会很棒。谢谢

【问题讨论】:

    标签: java android boolean event-listener


    【解决方案1】:

    我想,变量并不孤单。它作为一个类的成员存在——对吗?因此侦听器接口将嵌套在该类中,并且该类将具有用于侦听器的成员变量和 setBooChangeListener 方法。并且在对变量的每次更改(我希望它不是公开的)时,您都会调用侦听器,如果有的话。差不多就这些了。

    class C
    {
        private boolean mBoo; //that's our variable
    
        public interface BooChangeListener
        {
            public void OnBooChange(boolean Boo);
        }
    
        private BooChangeListener mOnChange = null;
        
        public void setOnBooChangeListener(BooChangeListener bcl)
        {
            mOnChange = bcl;
        }
    
        public void setBoo(boolean b)
        {
             mBoo = b;
             if(mOnChange != null)
                 mOnChange.onBooChange(b);
        }
    }
    

    没有办法让系统 (Java) 监视变量并在它发生更改时自动触发侦听器。没有魔法。

    【讨论】:

    • 不错的简单代码 sn-p。它只是缺少设置器,如果设置了一个,侦听器会收到通知:)
    • 这个答案中唯一缺少的是为mBoo 定义一个setter 方法,该方法在设置变量时实际通知侦听器。
    • 正如其他两个所说,您错过了设置监听器!
    【解决方案2】:

    我希望我可以将其添加为评论...我同意上面 Seva 的大部分内容,但是,请考虑将类设为 bean 并实现 PropertyChangeListener 接口:

    http://docs.oracle.com/javase/1.4.2/docs/api/java/beans/PropertyChangeListener.html

    bean 属性确实可以通过这种方式进行绑定和监视。在 javafx 2.0 中,Oracle 在属性和 UI 元素之间添加了一些非常先进的机制,我真的希望这可以分支到核心 API 并以某种方式可供 Android 开发人员使用。如果 JavaFX 2.0 对游戏来说太晚了,我们至少可以在核心中获得一些更现代的范式转变,这样这样的情况就可以以简单而合理的方式实现。

    【讨论】:

    • 我认为 Android 目前不支持 bean。此外,PropertyChangeListener 与类型无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多