2014-11-25 22 views
11

Oto mój kod -Jak sprawdzić, czy AlertDialog.builder wyświetla i anulować, jeśli pokazuje?

View layout = LayoutInflater.from(this).inflate(R.layout.dialog_loc_info, null); 
final Button mButton_Mobile = (Button) layout.findViewById(R.id.button); 
AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setView(layout); 
mButton_Mobile.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View arg0) { 
     if(builder.) 
      showDialog(); // this is another dialog, nothing to do with this code 
     } 
    }); 
builder.setNeutralButton(getString(android.R.string.ok), 
         new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.dismiss(); 
    } 
}); 
builder.show(); 
+3

Nie dodawaj komentarzy, dlaczego zignorowałeś to pytanie? pomoże mi podnieść jakość moich pytań. – Darpan

Odpowiedz

31

Możesz użyć do tego metod AlertDialog.

AlertDialog alert = new AlertDialog.Builder(context).create(); 

if (alert.isShowing()) { 
    alert.dismiss(); 
} 

Mam nadzieję, że to pomaga.

0

Można sprawdzić to w ten sposób:

if(alert != null && alert.isShowing()){ 
    alert.show();// or alert.dismiss() it 
} 
+0

@Darpan tnx na twoją wzmiankę, ale użyłem nazwy 'builder' ponieważ jest to równe z obiektem właściciela zapytania' AlertDialog.Builder'. –

+1

tutaj jest dokumentacja http://developer.android.com/reference/android/app/AlertDialog.Builder.html. Funkcja isShowing() nie jest nigdzie. Spróbuj uruchomić swój kod. – Darpan

+0

isShowing nie istnieje na budowle –

0

AlertDialog rozciąga Dialog który ma isShowing().

Podpowiedź: AlertDialog.Builder tworzy instancję AlertDialog. :)

+0

już otrzymał/zaakceptował odpowiedź – user2450263

2

Alternatywnym podejściem jest użycie metody generowania AlertDialog z konstruktorem, a następnie utworzenie AlertDialog bez wyświetlania go podczas ustawiania AlertDialog do zmiennej klasy.

Następnie skontaktować się z .isShowing(); metody

Przykład:

AlertDialog mAlertDialog; 

public showMyAlertDialog(View layout){ 

    AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); 

    builder.setView(layout); 

    builder.setNeutralButton(getString(android.R.string.ok),new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
      mAlertDialog = null; //setting to null is not required persay 
     } 

    }); 

    mAlertDialog = builder.create() 
    mAlertDialog.show(); 
} 

public boolean isAlertDialogShowing(AlertDialog thisAlertDialog){ 
    if(thisAlertDialog != null){ 
     return thisAlertDialog.isShowing(); 
    } 
} 

nadzieję, że zrozumiałe jest, jak korzystać z tego źródła. Pozdrawiam: