在不单击按钮的情况下关闭AlertDialog

时间:2013-04-15 07:14:03

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

然后在调用函数时退出它,如

private void dismissMyDiag() {
    alert.dismiss();
}

当然,我已经看到了通过onclick事件做到这一点的方式,这不是我想做的事情。 有可能做这样的事吗?如果没有,对话框之王允许我这样做?

谢谢!

3 个答案:

答案 0 :(得分:6)

像这样获取alertDialog

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

dialog=alert.create().show();

然后致电

private void dismissMyDiag() {
    dialog.dismiss();
}

答案 1 :(得分:1)

尝试这种方式:

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

答案 2 :(得分:0)

我知道这是一个古老的问题,但希望它能对某些人有所帮助。 您还可以为警报对话框创建自定义类并访问其漏洞项目 可以显示和隐藏任何地方

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不为null检查其他必要的应用程序是否可能崩溃