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

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

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

4

3 回答 3

7

首先,你的 Dialog 需要在你的类的范围内,所以你需要声明

public Dialog dialog;

在任何方法之外。然后,在您的onCreate()方法中,像您已经拥有的那样创建对话框。只留下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();
    }
});

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

于 2011-06-20T01:53:10.240 回答
1

您也可以像这样为这两个按钮编写一个通用的 onClick。这样可以避免为每个按钮重写onClick事件,维护起来也很方便。

公共无效 onClick(查看 v){

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

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


}
于 2011-06-20T02:38:44.090 回答
1

初始化 Dialog 之外的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();
       }
});
于 2016-03-14T06:32:10.903 回答