2013-06-17 8 views
5

Ich verwende den folgenden Code, um einen Alarmdialog mit zwei Schaltflächen anzuzeigen. Wenn der Dialog jedoch nicht unterbrochen wird, wenn die Aktivität pausiert ist, wird ein Fehler ausgegeben. Ich weiß, dass Sie einen Dialog mit .dismiss ablehnen können, aber dies ist ein AlertDialog Builder, kein Dialog. Irgendeine Idee, wie man das macht?Alarmdialog-Generator von Onpause abbrechen

AlertDialog.Builder alertDialog = new AlertDialog.Builder(MyActivity.this); 

       // Setting Dialog Title 
       alertDialog.setTitle("Title"); 

       // Setting Dialog Message 
       alertDialog.setMessage("Message"); 

       // Setting Positive "Yes" Button 
       alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog,int which) { 
         //yes 
         dialog.cancel(); 

        } 
       }); 

       // Setting Negative "NO" Button 
       alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         //no     
        dialog.cancel(); 
        } 
       }); 

       // Showing Alert Message 
       alertDialog.show(); 
+0

was ist mit dialog.cancel? –

Antwort

7

Sie können den Alertdialog erhalten, wenn Sie den Dialog zeigen:

private AlertDialog dialog; // instance variable 

dialog = alertDialog.show(); // show and return the dialog 

Im onPause Sie den Alertdialog entlassen können:

@Override 
protected void onPause() { 
    super.onPause(); 
    if (alertDialog != null) { 
     alertDialog.dismiss(); 
    } 
} 

BTW ist der AlertDialog.Builder ein Baumeister, weil Sie kann die builder pattern so verwenden:

dialog = AlertDialog.Builder(MyActivity.this) 
    .setTitle("Title"); 
    .setMessage("Message") 
[...] 
    .show(); 
+0

Ich habe festgestellt, dass dies bei mir nicht funktioniert hat, da alertDialog.show(); gibt void statt des erwarteten AlertDialogs zurück. Trotzdem danke. –

Verwandte Themen