Custom AlertDialog

M

MBPower

Fortgeschrittenes Mitglied
11
Kann man herausfinden, ob ein Custom AlertDialog schon geöffnet ist, damit dies nicht noch einmal aufgerufen wird?
Das Problem ist, dass ich im onResume() ein StartDialog aufrufe, wenn ein Spiel noch nicht gestartet ist. Teilweise, aber nur sehr selten kommt es vor, dass dadurch der Custom AlertDialog doppelt existiert.
Bisher habe ich das Problem nur festgestellt, wenn man auf eine Admob Webung in dem Custom AlertDialog Clickt.

Wie kann man prüfen, ob ein AlertDialog schon aufgerufen ist, oder wie kann ich den doppelten aufruf verhinden?
Ein Lösung wäre auch im onStop den Dialog zu schliessen, aber wie kann man das machen?

Code:
AlertDialog.Builder alertbox = new AlertDialog.Builder(this);
alertbox.setView(textEntryView);
TextView txtStartDialogTitle;
TextView txtStartDialogInfo;
txtStartDialogTitle = (TextView) textEntryView.findViewById(R.id.txtStartDialogTitle);
txtStartDialogInfo = (TextView) textEntryView.findViewById(R.id.txtStartDialogInfo);
txtStartDialogTitle.setText(txtStartDialogTitleString);
txtStartDialogInfo.setText(txtStartDialogInfoString);
String buttonNewGame = "" + getText(R.string.newgame);
String buttonSettings = "" + getText(R.string.settings);
String buttonInstruction = "" + getText(R.string.instruction);

alertbox.setPositiveButton(buttonNewGame, new DialogInterface.OnClickListener() {
    // do something when the button is clicked
    public void onClick(DialogInterface arg0, int arg1) {
        
        //Toast ("buttonNewGame");
       
    }
});

alertbox.setNeutralButton(buttonSettings, new DialogInterface.OnClickListener() {
    // do something when the button is clicked
    public void onClick(DialogInterface arg0, int arg1) {
        
        //Toast ("buttonSettings");
        
    }
});

alertbox.setNegativeButton(buttonInstruction, new DialogInterface.OnClickListener() {
    // do something when the button is clicked
    public void onClick(DialogInterface arg0, int arg1) {

        //Toast ("buttonInstruction");
        
    }
});

alertbox.show();
 
Hiho,
vlt eine kleine Idee:

definiere dir doch eine globale Boolsche Variable beim Erstellen des Dialogs,
sobald dieser erstellt wird setzt du sie auf "true" und wenn du dann Abfragen willst ob der Dialog schon vorhanden ist kannts du das über eine Abfrage der Variable umgehen?

Alternativ definiere
AlertDialog.Builder alertbox;
doch global, somit drüftest du dann auch in der onStop methode auf ihn zugreifen und schließen können?

Grüße
Basti
 
Das mit dem Boolean-Wert habe ich schon gemacht, aber teilweise bekomme ich dennoch ein Problem. Auch wenn ich den Wert im onSaveInstanceState und onRestoreInstanceState mitnehme, gibt es hin und wieder das Problem eines doppelten Dialog.

Alertbox global definieren habe ich auch versucht, nur wie kann ich dann einen Dialog automatisch schliessen?

Leider gibt es ein alertbox.cancel(); nicht.

Ich kenne nur die folgenden Möglichkeit einen Dialog wieder zu schliessen.
Code:
alertbox.setNeutralButton("Test", new DialogInterface.OnClickListener() {
    // do something when the button is clicked
    public void onClick(DialogInterface dialog, int arg1) {
        dialog.cancel();
    }
});

Was für einen Möglichkeit gibt es noch einen Dialog wieder zu schliessen?
 
Danke für die Info. :)
 

Ähnliche Themen

J
  • Juleru
Antworten
8
Aufrufe
466
Juleru
J
J
Antworten
2
Aufrufe
955
justinh13
J
J
Antworten
2
Aufrufe
682
JoEntwickler
J
Zurück
Oben Unten