无法关闭自定义对话框

时间:2011-06-20 01:41:17

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

我有这段代码,但解雇不起作用。

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

3 个答案:

答案 0 :(得分:7)

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

public Dialog dialog;

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

您的按钮将如下所示:

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

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

答案 1 :(得分:1)

你也可以为这两个按钮编写一个常用的onClick。这将避免为每个按钮重写onClick事件。它将变得易于维护。

public void onClick(查看v){

   switch(v.getId())
   {
       case R.id.button3:
           dialog.show();

       case R.id.Button01:
           dialog.dismiss();
   }


}

答案 2 :(得分:1)

OnClickListener

之外初始化对话框
Dialog dialog = new Dialog(MainMenu.this);
dialog.setContentView(R.layout.maindialog);

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