1

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

4

2 回答 2

6

我想,变量并不孤单。它作为一个类的成员存在——对吗?因此侦听器接口将嵌套在该类中,并且该类将具有用于侦听器的成员变量和 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) 监视变量并在它发生更改时自动触发侦听器。没有魔法。

于 2012-04-03T20:45:49.417 回答
0

我希望我可以将其添加为评论...我同意上面 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 对游戏来说为时已晚,我们至少可能会在核心中获得一些更现代的范式转变,因此可以以简单合理的方式实现这样的情况。

于 2012-04-03T20:55:29.897 回答