我有一个名为dialog_main.xml
在那个布局中有两个按钮。在我的MainActivity
中,我定义了两个OnClickListeners
并将它们分配给了我的两个按钮。但是,当我的MainActivity
启动并出现我的对话框时,单击我的按钮不会执行任何操作。
此外,旁注dialog.setCancelable(false);
似乎也没有起作用。如果我没有弄错,那么在单击对话框外部时,应该阻止对话框关闭?
以下内容属于MainActivity
:
dialog = new Dialog(MainActivity.this);
dialog.setContentView(R.layout.dialog_main);
dialog.setTitle("Checklist");
dialog.setCancelable(false);
dialog.show();
final LayoutInflater factory = getLayoutInflater();
final View dialogButtonsView = factory.inflate(R.layout.dialog_main, null);
Button newChecklistButton = (Button) dialogButtonsView.findViewById(R.id.new_checklist_button);
Button resumeChecklistButton = (Button) dialogButtonsView.findViewById(R.id.resume_checklist_button);
newChecklistButton.setOnClickListener(newChecklistOnClickListener);
resumeChecklistButton.setOnClickListener(resumeChecklistOnClickListener);
private Button.OnClickListener newChecklistOnClickListener = new Button.OnClickListener() {
@Override
public void onClick(View view) {
System.out.println("called");
dialog.dismiss();
}
};
private Button.OnClickListener resumeChecklistOnClickListener = new Button.OnClickListener() {
@Override
public void onClick(View view) {
System.out.println("called");
dialog.dismiss();
}
};
答案 0 :(得分:3)
问题正在发生,因为按钮单击侦听器使用dialogButtonsView
View对象添加到Button,但它没有作为Dialog View传递给setContentView
method.Change:
dialog.setContentView(R.layout.dialog_main);
到
dialog.setContentView(dialogButtonsView);
修改强>
因为创建Dialog对象,不需要再次在inflate
中传递setContentView
来访问View,只需使用dialog
对象来调用findViewById
方法,如:
Button newChecklistButton =(Button)dialog.findViewById(R.id.new_checklist_button);