【发布时间】:2014-03-24 14:40:15
【问题描述】:
我尝试在我的 Application 子类中实现一个静态 Observable,但它不起作用。没有异常或错误消息,但我的 update() 回调没有被调用。
MyApplication.java
public class MyApplication extends Application{
public static Observable appObserver = new Observable();
public void onCreate(){
super.onCreate();
}
}
Foo.java
MyApplication.appObserver.notifyObservers( "Hello world" );
BarFragment.java
public class BarFragment extends Fragment implements Observer{
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
MyApplication.appObserver.addObserver(this);
}
@Override
public void onDestroy() {
MyApplication.appObserver.deleteObserver(this);
super.onDestroy();
}
@Override
public void update(Observable observable, Object data) {
Log.i("BarFragment", data.toString()); // Should log, but doesn't
}
}
更重要的是,我试着写下我自己的一个简单的 Observable,然后用 public static MyObservable appObserver = new MyObservable(); 替换 public static Observable appObserver = new Observable();,一切都像魅力一样发挥作用
MyObservable.java
public class MyObservable {
protected List<Object> observers = new ArrayList<Object>();
public void addObserver(Object observer){
observers.add(observer);
}
public void notifyObservers(Object data){
for( int i=0; i<observers.size(); i++ ){
((Observer) observers.get(i)).update(null, data);
}
}
}
我错过了什么?
如果重要的话,我会在装有 Android 2.3.6 的 Nexus One 上进行测试。
【问题讨论】:
标签: java android observer-pattern observable observers