2010-02-08 17 views
11

Gibt es eine einfache Möglichkeit, den Inhalt eines Dialogfelds in Android zu ändern, ohne das Dialogfeld neu erstellen zu müssen? Ich weiß, dass Activity.onCreateDialog() nur einmal aufgerufen wird, wenn das Dialogfeld zuerst erstellt werden muss, und hier legen Sie zunächst den Inhalt des Dialogfelds fest. Ich muss später den Inhalt des Dialogs ändern, also frage ich mich, was der richtige Weg ist, dies zu tun.Ändern Sie den Inhalt eines Android-Dialogfelds nach der Erstellung

Antwort

8

Die onPrepareDialog() method wird aufgerufen, kurz bevor die Dialogallowing you to update it appropriately angezeigt wird.

Es ist die gleiche int ID wie onCreateDialog() und die Dialog, die Sie in dieser Methode erstellt übergeben.

@Override 
protected void onPrepareDialog(int id, Dialog dialog) { 
    //Always call through to super implementation 
    super.onPrepareDialog(id, dialog); 

    switch (id) { 
     case DIALOG_TIME: 
      ((AlertDialog)dialog).setMessage("The time is " + new Date()); 
      break; 
    } 
} 
+0

zu entlassen Ich weiß nicht, wie ich das verpasst habe. Vielen Dank! – tronman

+5

Das funktioniert gut, wenn Sie ein Symbol, eine Nachricht, einen Titel und einige andere Elemente ändern möchten, aber ich denke nicht, dass es funktioniert, wenn Sie die Elemente in einer Liste ändern möchten. Wenn Sie beispielsweise die Methode setSingleChoiceItems() von AlertDialog.Builder aufgerufen haben, können Sie diese Elemente in onPrepareDialog() nicht ändern. Die einzige Lösung besteht darin, einen OnDismissListener für den Dialog zu erstellen, der removeDialog() aufruft. Dies erzwingt, dass die onCreateDialog() -Methode jedes Mal aufgerufen wird. – tronman

0

oben funktionierte nicht für mich. Rufen removeDialog funktioniert, ohne die AlertDialog

Verwandte Themen