2012-03-29 9 views
0

Ich arbeite mit einigen benutzerdefinierten Dialog Klassen, die ich für eine Android-Anwendung erstellt habe. Wenn eine dieser Dialogklassen aufgerufen wird, wird das Dialogfeld angezeigt, und der Benutzer nimmt im Dialogfeld Änderungen an Widgets vor. Diese Änderungen wirken sich auf die aufrufende Aktivität aus, sobald das Dialogfeld geschlossen wird.Mit Dialogen in Android arbeiten

Ich habe ein paar Workarounds entwickelt, um diese Funktion zu bekommen ... aber ich mag netten Code, und alle Arbeitsumgebungen, mit denen ich gespielt habe, sind einfach nicht attraktiv für mich (statische Variablen, Return Statements, etc). Also dachte ich mir, ich könnte vielleicht ein paar Statements in die OnResume- oder ReStart-Methoden meiner Anrufaktivität schreiben, um die notwendige Arbeit zu erledigen. Nichts passiert, wenn ich den Dialog verlasse, daher glaube ich nicht, dass eine der OverRide-Methoden für den Lebenszyklus einer Aktivität aufgerufen wird, wenn ein Dialog geschlossen wird (obwohl OnPause beim Aufruf des Dialogs zuerst aufgerufen wird).

Ich schaute durch die Andoid Docs und las, dass ich Dialog in meiner benutzerdefinierten Dialog-Klasse und verschiedene Methoden verwenden/übersteuern konnte dort. Das scheint meiner Meinung nach eine Kanonenkugel zu sein, um eine Fliege zu töten (vor allem, weil ich bereits eine Arbeit habe, die gut funktioniert).

Also im Grunde habe ich mich gefragt, welche Methode aufgerufen wird (entweder aus dem Dialog oder aus der Aktivität, die den Dialog gestartet hat), um die Aktivität, die den Dialog aufgerufen hat, neu zu starten. < - dieser Satz ergibt für mich keinen Sinn ... Lassen Sie mich mit einem Diagramm beschreiben (ich kann Pseudo-Code geben, wenn es ganz notwendig ist; aber ich sehe nicht, wie das weiterhelfen würde)

Aufruf Aktivität erstellt den Dialog -> (dann wird die aufrufende Aktivität durch eine Methode ausgegraut) -> Dialog wird angezeigt -> blah blah -> Dialog wird beendet -> (die aufrufende Aktivität wird mit einer Methode fortgesetzt) ​​

Die beiden Methoden darüber sind in Klammern, was sind sie? (Letzteres ist besonders relevant für meine Interessen) Vielen Dank für Ihre Zeit.

Antwort

0

Ich bin mir nicht ganz sicher, wie es den Hintergrund ausgraut, aber es gibt ein paar Listener, die Sie implementieren können und den entsprechenden Code dort einbringen, den OnDismissListener, OnCancelListener und OnShowListener (API Level 8 erforderlich).

Beispiel (gleiche Syntax für die anderen Zuhörer)

Dialog d = new Dialog(this); 
    d.setOnCancelListener(new DialogInterface.OnCancelListener() { 

     @Override 
     public void onCancel(DialogInterface dialog) { 
      // do stuff 

     } 
    }); 
Verwandte Themen