2016-07-20 27 views
0

我用观察者模式机器人观测方法更新不起作用

最近,在我的主类,

MainActivity.class

static private AutoObservable observable; //global variable 
private Agency agency = null; //global variable 

@Override 
protected void onStart() { 
    super.onStart(); 
    observable = agency; 
    observable.addObserver(new Observerclass(agency.RoomName())); 
} 

AutoObservable.class

public class AutoObservable extends Observable { 
@Override 
public void notifyObservers(Object data) { 
    super.setChanged(); 
    super.notifyObservers(data); 
    super.clearChanged(); 
} 
} 

Observerclass。

public class Observerclass implements Observer { 
    private final String roomName; 
    public Observerclass(String roomName) { 
     this.roomName = roomName; 
    } 

    @Override 
    public void update(Observable observable, Object o) { 
     . . . // not work .. 
    } 

也许,,许可问题?.. 请给我建议。

回答

0

你不必重写notifyObservers(),所以,从AutoObservable

@Override 
public void notifyObservers(Object data) { 
    super.setChanged(); 
    super.notifyObservers(data); 
    super.clearChanged(); 
} 

相反删除此代码块,这样做在AutoObservable.java

public void onSomeEvent() { 
    setChanged(); 
    notifyObservers(data); 
} 

而且,从MainActivity通话Observer例如像

observable.onSomeEvent(); 
+0

谢谢,我有一个问题。 'notifyObservers(data)'数据是'onSomeEvent(Object data)'是对的? – chohyunwook

+0

是的,如果你想传递来自不同观察者的不同数据,这是有道理的。 – Krrishnaaaa