Android 不单击按钮即可关闭AlertDialog

Android 不单击按钮即可关闭AlertDialog,android,android-alertdialog,Android,Android Alertdialog,我想关闭AlertDialog窗口,但不是在单击“确定”或“取消”按钮时关闭,而是在调用操作时关闭。 事实上,我想用这种方式在onResume函数中创建对话框: @Override public void onResume() { super.onResume(); alert = new AlertDialog.Builder(this); alert.setTitle("Stay stuck to a tag"); alert.create().show();

我想关闭AlertDialog窗口,但不是在单击“确定”或“取消”按钮时关闭,而是在调用操作时关闭。 事实上,我想用这种方式在onResume函数中创建对话框:

@Override
public void onResume() {
    super.onResume();
    alert = new AlertDialog.Builder(this);
    alert.setTitle("Stay stuck to a tag");
    alert.create().show();
}
然后在调用函数时退出它,如

private void dismissMyDiag() {
    alert.dismiss();
}
当然,我已经看到了通过onclick事件实现这一点的方法,这不是我想要做的。 有可能做这样的事吗?若并没有,那个么哪个对话框之王允许我这么做呢


谢谢大家!

像这样获取alertDialog

AlertDialog dialog;
 alert = new AlertDialog.Builder(this);

dialog=alert.create().show();
然后打电话

private void dismissMyDiag() {
    dialog.dismiss();
}
试着这样做:

final AlertDialog d = new AlertDialog.Builder(context)
                .setView(v)
                .setTitle(R.string.my_title)
                .setPositiveButton(android.R.string.ok,
                        new Dialog.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface d, int which) {
                                //Do nothing here. We override the onclick
                            }
                        })
                .setNegativeButton(android.R.string.cancel, null)
                .create();

        d.setOnShowListener(new DialogInterface.OnShowListener() {

            @Override
            public void onShow(DialogInterface dialog) {

                Button b = d.getButton(AlertDialog.BUTTON_POSITIVE);
                b.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View view) {
                        // TODO Do something

                        //Dismiss once everything is OK.
                        d.dismiss();
                    }
                });
            }
        });

我知道这是一个老问题,但我希望这能帮助一些人。 您还可以为“警报”对话框创建自定义类并访问该类 可以显示和隐藏任何地方

package (Your_Pakage_Name);
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatDialogFragment;


public class AlertDailogbox extends AppCompatDialogFragment {

    String Title = null;
    String Msg = null;
    String TAG = "Alert Dialog Box";

    public AlertDailogbox(String title, String msg) {
        Title = title;
        Msg = msg;
        
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle(Title)
                .setMessage(Msg)
                .setIcon(R.drawable.ic_alert) //set icon if you want
                .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        
                    }
                });

        return builder.create();
    }
}
拜访您的项目(活动) 创建alertDialog类的全局变量

private AlertDailogbox alertDailogbox;
用于显示对话框的函数

private void showMsgDailog(String Title,String Msg){
    alertDailogbox = new AlertDailogbox(Title,Msg);
    alertDailogbox.setCancelable(false);
    alertDailogbox.show(getSupportFragmentManager(),"alert Dailog");
}
解雇结束

if(alertDailogbox != null)
       alertDailogbox.dismiss();

alerDailogeBox不为空检查是否有必要其他明智的应用程序可能崩溃

是否存在可能调用dismissMyDiag()的AsyncTask或其他类型的后台进程?该方法何时调用?异步任务?还是在主要活动中?你想过使用线程吗?谢谢,就这样!更准确地说,它类似于alert=newalertdialog.Builder(this);dialog=alert.create();dialog.show();