【发布时间】:2012-04-03 20:34:41
【问题描述】:
我正在使用 Java 创建一个 android 应用程序。我有一个名为“运动”的布尔变量。我想创建一个在“运动”值发生变化时触发的事件。任何指向正确方向的指针都会很棒。谢谢
【问题讨论】:
标签: java android boolean event-listener
我正在使用 Java 创建一个 android 应用程序。我有一个名为“运动”的布尔变量。我想创建一个在“运动”值发生变化时触发的事件。任何指向正确方向的指针都会很棒。谢谢
【问题讨论】:
标签: java android boolean event-listener
我想,变量并不孤单。它作为一个类的成员存在——对吗?因此侦听器接口将嵌套在该类中,并且该类将具有用于侦听器的成员变量和 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) 监视变量并在它发生更改时自动触发侦听器。没有魔法。
【讨论】:
mBoo 定义一个setter 方法,该方法在设置变量时实际通知侦听器。
我希望我可以将其添加为评论...我同意上面 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 对游戏来说太晚了,我们至少可以在核心中获得一些更现代的范式转变,这样这样的情况就可以以简单而合理的方式实现。
【讨论】: