//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按钮应该关闭对话框但是解雇不起作用。 你能帮我理解为什么吗?
答案 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();
}
});