DatePicker не отображается при нажатии EditText, если он находится внутри AlertDialog - PullRequest
0 голосов
/ 28 апреля 2018

После моего кода 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" />

Если вы нажмете на EditText, абсолютно ничего не произойдет. Обратите внимание, что EditText находится внутри AlertDialog, а все внутри фрагмента.

1 Ответ

0 голосов
/ 28 апреля 2018

Вам необходимо установить OnClick при создании диалога, а не при нажатии кнопки PositiveButton.

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...