Beobachtbar / Beobachter Android

9

BEARBEITEN siehe Observer Observables-Implementierungsproblem - Es scheint so Ich überschrieb Methoden, die nicht sein mussten, und rief nicht setChanged () auf; vor notify ();

Ich habe auf dem Observer Pattern nachgelesen, um meine Benutzeroberfläche auf dem neuesten Stand zu halten, aber ich kann immer noch nicht sehen, wie sie verwendet wird. Selbst wenn in meinem bestimmten Objekt meine MainActivity benachrichtigt wird, führt das update (); Methode Ich würde immer noch nicht in der Lage sein, das Pet-Objekt zu verwenden, um die Update-Werte zu ziehen, wie das Objekt in Oncreate erstellt wird ... und ich kann einfach kein neues Objekt erstellen, weil dann die Variablen anders sind .. das ist meine Implementierung und es scheint nicht zu funktionieren.

Beobachter / MainActivity

%Vor%

Beobachtbar / Haustier

%Vor%     
Pheonix2105 25.02.2013, 14:08
quelle

2 Antworten

3

Erstens würde ich nicht empfehlen, addObserver oder removeObserver in Ihrem beobachtbaren Objekt zu überschreiben. Die API führt diese Aufgabe sehr gut aus (es sei denn, Sie möchten eine bestimmte Funktionalität).

Zweitens ist die Methode notifyObservers() überladen, so dass Sie ihr ein Objekt übergeben können, IE notifyObservers(Object obj) . Wenn Sie Ihre Pet , notifyObservers(this) übergeben, erhalten Sie einen Verweis auf Ihr Objekt Pet , das beobachtet wird.

Ich denke, das ist Ihre Frage, aber bitte korrigieren Sie mich, wenn ich falsch liege.

BEARBEITEN : Um dies zu verdeutlichen, hängt meine Antwort davon ab, dass Sie die Klasse Observable in der Java API verwenden hier .

Bei weiterer Überprüfung sollten Sie bereits einen Verweis auf das Pet -Objekt haben, das die update -Methode von Observer

aufgerufen hat     
nattyddubbs 25.02.2013, 14:16
quelle
1

Auf Ihre pet kann in anderen Methoden nicht zugegriffen werden, da sie nicht auf globaler Ebene definiert ist.

Sie sollten Pet pet = new Renamon(); außerhalb der Methode onCreate definieren.

    
waqaslam 25.02.2013 14:15
quelle

Tags und Links