web-dev-qa-db-ja.com

AlertDialog.builderが表示されているかどうかを確認し、表示されている場合はキャンセルする方法

ここに私のコードがあります-

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();
17
Darpan

そのためにAlertDialogメソッドを使用できます。

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

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

それが役に立てば幸い。

38
MysticMagicϡ

別の方法は、メソッドを使用してBuilderでAlertDialogを生成し、AlertDialogをクラス変数に設定する際に表示せずにAlertDialogを作成することです。

次に、.isShowing();メソッドで確認します

例:

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();
    }
}

このソースの使用方法を理解してほしい。乾杯

3
CrandellWS

AlertDialogは、 isShowing() を持つDialogを拡張します。

ヒント:AlertDialog.BuilderAlertDialogインスタンスを作成します。 :)

0
Pararth

これで確認できます:

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