android 中更改变量的侦听器
A listener for changing variable in android
我的 class 中有一个变量,我希望当该变量改变时,我在另一个 class 中执行一个操作。
事实上,我想要一个监听器来改变 android 中的变量(我的变量可能每分钟都会改变)
public class Connect {
public static boolean myBoolean;
//some actions do and myBoolean change
}
public class Selection extends Activity implements OnMenuItemClickListener{
//I want a thing like listener here ,when myboolean changed I do an action (myboolean may change every minute)
}
直接是不可能的。但是,您可以将您的字段设为私有,添加 getter 和 setter,并创建一个添加侦听器的方法(这称为 Observer pattern):
interface ConnectionBooleanChangedListener {
public void OnMyBooleanChanged();
}
public class Connect {
private static boolean myBoolean;
private static List<ConnectionBooleanChangedListener> listeners = new ArrayList<ConnectionBooleanChangedListener>();
public static boolean getMyBoolean() { return myBoolean; }
public static void setMyBoolean(boolean value) {
myBoolean = value;
for (ConnectionBooleanChangedListener l : listeners) {
l.OnMyBooleanChanged();
}
}
public static void addMyBooleanListener(ConnectionBooleanChangedListener l) {
listeners.add(l);
}
}
然后,无论你想在哪里监听布尔值的变化,你都可以注册一个监听器:
Connect.addMyBooleanListener(new ConnectionBooleanChangedListener() {
@Override
public void OnMyBooleanChanged() {
// do something
}
});
添加移除侦听器的方法留作练习。显然,要使其正常工作,您需要确保 myBoolean
仅通过 setMyBoolean
更改,即使在 Connect
.
内部也是如此
我的 class 中有一个变量,我希望当该变量改变时,我在另一个 class 中执行一个操作。 事实上,我想要一个监听器来改变 android 中的变量(我的变量可能每分钟都会改变)
public class Connect {
public static boolean myBoolean;
//some actions do and myBoolean change
}
public class Selection extends Activity implements OnMenuItemClickListener{
//I want a thing like listener here ,when myboolean changed I do an action (myboolean may change every minute)
}
直接是不可能的。但是,您可以将您的字段设为私有,添加 getter 和 setter,并创建一个添加侦听器的方法(这称为 Observer pattern):
interface ConnectionBooleanChangedListener {
public void OnMyBooleanChanged();
}
public class Connect {
private static boolean myBoolean;
private static List<ConnectionBooleanChangedListener> listeners = new ArrayList<ConnectionBooleanChangedListener>();
public static boolean getMyBoolean() { return myBoolean; }
public static void setMyBoolean(boolean value) {
myBoolean = value;
for (ConnectionBooleanChangedListener l : listeners) {
l.OnMyBooleanChanged();
}
}
public static void addMyBooleanListener(ConnectionBooleanChangedListener l) {
listeners.add(l);
}
}
然后,无论你想在哪里监听布尔值的变化,你都可以注册一个监听器:
Connect.addMyBooleanListener(new ConnectionBooleanChangedListener() {
@Override
public void OnMyBooleanChanged() {
// do something
}
});
添加移除侦听器的方法留作练习。显然,要使其正常工作,您需要确保 myBoolean
仅通过 setMyBoolean
更改,即使在 Connect
.