1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. MBPower, 26.11.2010 #1
    MBPower

    MBPower Threadstarter Erfahrener Benutzer

    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();
    
     
  2. FireDragon, 27.11.2010 #2
    FireDragon

    FireDragon Neuer Benutzer

    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
    doch global, somit drüftest du dann auch in der onStop methode auf ihn zugreifen und schließen können?

    Grüße
    Basti
     
  3. MBPower, 27.11.2010 #3
    MBPower

    MBPower Threadstarter Erfahrener Benutzer

    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?
     
  4. FireDragon, 27.11.2010 #4
    FireDragon

    FireDragon Neuer Benutzer

    hm, wie wäre es den mit sowas:
    Vlt kannst du dann besser auf den AlertDialog zugreifen, z.B. gibt es in der Dialog Klasse eine "isShowing()" Methode, und zum schließen dann "dismiss()"
    Dialog | Android Developers

    AlertDialog | Android Developers

    LG
    Basti
     
    MBPower bedankt sich.
  5. MBPower, 27.11.2010 #5
    MBPower

    MBPower Threadstarter Erfahrener Benutzer

    Danke für die Info. :)
     

Diese Seite empfehlen

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. alertdialog android schließen

    ,
  2. android custom alertdialog