Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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 如果日期选择器位于AlertDialog内,则它不显示在EditText上单击_Java_Android_Android Layout - Fatal编程技术网

Java 如果日期选择器位于AlertDialog内,则它不显示在EditText上单击

Java 如果日期选择器位于AlertDialog内,则它不显示在EditText上单击,java,android,android-layout,Java,Android,Android Layout,下面是我的Java代码: AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getContext()); alertDialogBuilder.setView(promptView); alertDialogBuilder.setCancelable(false) .setPositiveButton(R.string.add, new DialogInterface.OnClickListener(

下面是我的Java代码:

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getContext());
alertDialogBuilder.setView(promptView);
alertDialogBuilder.setCancelable(false)
        .setPositiveButton(R.string.add, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                final EditText etDate = promptView.findViewById(R.id.etDate);
                etDate.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        final Calendar c = Calendar.getInstance();

                        DatePickerDialog dpd = new DatePickerDialog(getContext(),
                                new DatePickerDialog.OnDateSetListener() {
                                    @Override
                                    public void onDateSet(DatePicker view, int year,
                                                          int monthOfYear, int dayOfMonth) {
                                        etDate.setText(dayOfMonth + "-"
                                                + (monthOfYear + 1) + "-" + year);

                                    }
                                }, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE));
                        dpd.show();
                    }
                });
            }
        });
AlertDialog alert = alertDialogBuilder.create();
alert.show();
以下
etDate

<EditText
            android:id="@+id/etDate"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Date"
            android:focusable="false"
            android:inputType="date" />


如果你点击编辑文本,绝对不会发生任何事情。请注意,编辑文本在AlertDialog中,所有内容都在片段中。

您需要在创建对话框期间设置
OnClick
,而不是单击正按钮

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getContext());
    alertDialogBuilder.setView(promptView);
    alertDialogBuilder.setCancelable(false);
    final EditText etDate = promptView.findViewById(R.id.etDate);
    etDate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final Calendar c = Calendar.getInstance();
            DatePickerDialog dpd = new DatePickerDialog(getContext(),
                    new DatePickerDialog.OnDateSetListener() {
                        @Override
                        public void onDateSet(DatePicker view, int year,
                                              int monthOfYear, int dayOfMonth) {
                            etDate.setText(dayOfMonth + "-"
                                    + (monthOfYear + 1) + "-" + year);

                        }
                    }, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE));
            dpd.show();
        }
    });
    alertDialogBuilder.setPositiveButton(R.string.add, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                }
            });
    AlertDialog alert = alertDialogBuilder.create();
    alert.show();