1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Custom AlertDialog

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von MBPower, 26.11.2010.

  1. MBPower, 26.11.2010 #1
    MBPower

    MBPower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    149
    Erhaltene Danke:
    9
    Registriert seit:
    26.02.2010
    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

    Beiträge:
    22
    Erhaltene Danke:
    7
    Registriert seit:
    07.10.2010
    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 Android-Hilfe.de Mitglied

    Beiträge:
    149
    Erhaltene Danke:
    9
    Registriert seit:
    26.02.2010
    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

    Beiträge:
    22
    Erhaltene Danke:
    7
    Registriert seit:
    07.10.2010
    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 Android-Hilfe.de Mitglied

    Beiträge:
    149
    Erhaltene Danke:
    9
    Registriert seit:
    26.02.2010
    Danke für die Info. :)
     

Diese Seite empfehlen