Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自定义对话框按钮不调用其OnClick方法_Java_Android_Onclicklistener_Android Alertdialog - Fatal编程技术网

Java 自定义对话框按钮不调用其OnClick方法

Java 自定义对话框按钮不调用其OnClick方法,java,android,onclicklistener,android-alertdialog,Java,Android,Onclicklistener,Android Alertdialog,我有一个自定义的对话框布局,名为Dialog\u main.xml 在这个布局中有两个按钮。在我的main活动中,我定义了两个OnClickListeners,并将它们分配给我的两个按钮。但是,当myMainActivity启动并显示my对话框时,单击my按钮不会起任何作用 另外,作为旁注dialog.setCancelable(false)似乎也不起作用。如果我没有弄错的话,那是为了防止在对话框外单击时关闭对话框 以下内容在我的main活动中: dialog = new Dia

我有一个自定义的对话框布局,名为
Dialog\u main.xml

在这个布局中有两个按钮。在我的
main活动中
,我定义了两个
OnClickListeners
,并将它们分配给我的两个按钮。但是,当my
MainActivity
启动并显示my对话框时,单击my按钮不会起任何作用

另外,作为旁注
dialog.setCancelable(false)似乎也不起作用。如果我没有弄错的话,那是为了防止在对话框外单击时关闭对话框

以下内容在我的
main活动中:

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

出现问题的原因是,按钮单击侦听器是使用
dialogButtonsView
View对象添加到按钮的,但它不是作为对话框视图传递给
setContentView
方法。更改:

dialog.setContentView(R.layout.dialog_main);

编辑: 由于正在创建对话框对象,因此无需在
中再次充气
,而该充气会在
setContentView
中传递以访问视图,只需使用
Dialog
对象调用
findViewById
方法,如下所示:

Button newChecklistButton =(Button)dialog.findViewById(R.id.new_checklist_button);

甜蜜而简单,谢谢!我会接受这个答案,当它成为可用的。
Button newChecklistButton =(Button)dialog.findViewById(R.id.new_checklist_button);