2013-06-17 17 views
5

Korzystam z poniższego kodu, aby wyświetlić okno dialogowe z dwoma przyciskami. Ale jeśli dialog nie jest wyłączony, gdy działanie jest wstrzymane, powoduje błąd. Wiem, że możesz zamknąć okno dialogowe za pomocą polecenia .dismiss, ale jest to konstruktor AlertDialog, a nie okno dialogowe. Masz pomysł, jak to zrobić?Odrzucanie konstruktora okna dialogowego z alertu

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

a co z dialog.cancel? –

Odpowiedz

7

można uzyskać AlertDialog podczas pokazywania okna:

private AlertDialog dialog; // instance variable 

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

W OnPause można odwoływania AlertDialog:

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

BTW AlertDialog.Builder jest budowniczym, bo ciebie można użyć modelu builder pattern, tak jak:

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

Okazało się, że to nie działa dla mnie, ponieważ alertDialog.show(); zwraca void zamiast oczekiwanego AlertDialog. Mimo to dzięki. –

Powiązane problemy