我试图在我的应用程序子类中实现静态Observable,但它不工作。没有例外或错误消息,但我的update()回调没有被调用。Observable/Observer无法正常工作?
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
}
}
什么更多的,我试着涂鸦了一个简单的可观察我自己的,然后一切工作像刚刚与public static MyObservable appObserver = new MyObservable();
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);
}
}
}
我缺少的是代public static Observable appObserver = new Observable();
魅力?
我使用Android 2.3.6在Nexus One上测试它,如果它很重要的话。