2016-07-20 46 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