无法关闭自定义对话框

Ric*_*rdo 1 android dialog dismiss

//About Button in the principal menu       
final Button button3 = (Button) findViewById(R.id.button3);

button3.setOnClickListener(
    new OnClickListener() {

    public void onClick(View v) {                
        //set up dialog
        Dialog dialog = new Dialog(MainMenu.this);
        dialog.setContentView(R.layout.maindialog);
        dialog.setTitle("About");
        dialog.setCancelable(true);

        //now that the dialog is set up, it's time to show it    
        dialog.show();

        Button closeButton = (Button) dialog.findViewById(R.id.Button01);
//      closeButton.setOnClickListener(new Button.OnClickListener() { 
//          public void onClick(View view) { 
//              dialog.dismiss();
//          }
//      });

        if(v==closeButton)
            dialog.dismiss();
    }
});
Run Code Online (Sandbox Code Playgroud)

我有这个代码,但解雇不起作用.

我有一个"约"按钮,当我点击它时会显示对话框窗口.然后对话框窗口有一个"确定"按钮,这个OK按钮应该关闭对话框但是解雇不起作用.你能帮我理解为什么吗?

Gle*_*ger 7

首先,您的Dialog需要在您的类的范围内,因此您需要声明

public Dialog dialog;
Run Code Online (Sandbox Code Playgroud)

任何方法之外.然后,在您的onCreate()方法中,创建您已有的Dialog.只保留show()dismiss()调用OnClickListeners.

你的按钮看起来像:

Button button3 = (Button) findViewById(R.id.button3);
button3.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        dialog.show();
    }
});

Button closeButton = (Button) dialog.findViewById(R.id.Button01);
closeButton.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        dialog.dismiss();
    }
});
Run Code Online (Sandbox Code Playgroud)

此外,最好提出一个适合您的命名约定,而不是随机大写或不资本化资源名称(例如,Button03与button1);