DatePicker: слушатель реагирует на нажатия рядом с кнопкой - PullRequest
0 голосов
/ 06 октября 2018

Мое приложение использует DatePicker.Когда я открываю DatePicker и нажимаю Done, выбирается дата.Проблема в том, что дата также выбирается, если пользователь нажимает, кроме DatePicker.Смотрите здесь:

enter image description here

Listener должен реагировать только при нажатии Done Button.Но он также реагирует, если щелкнуть по окружающему (красному) значку DatePicker.

Мой вопрос:
Как мне предотвратить это?

Если выхотите увидеть код, пожалуйста, оставьте комментарий.

Я уже пробовал это: Как обрабатывать диалог выбора даты, чтобы не устанавливать в тексте редактирования при нажатии вне диалогового окна Android?

       Calendar c = Calendar.getInstance();
        mYear = c.get(Calendar.YEAR);
        mMonth = c.get(Calendar.MONTH);
        mDay = c.get(Calendar.DAY_OF_MONTH);

        //DatePickerDialog mDatePicker;
        DatePickerDialog mDatePicker;
        mDatePicker = new DatePickerDialog(this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT, new DatePickerDialog.OnDateSetListener() {
            private boolean fired;
            public void resetFired(){
                fired = false;
            }
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                if(view.isShown()){
                    if(fired){
                        setDate(year, monthOfYear, dayOfMonth);
                        //ListView erneuern
                        adapter.notifyDataSetChanged();
                        return;
                    }
                    fired = true;
                }
            }
        }, mYear, mMonth, mDay);
        mDatePicker.setCanceledOnTouchOutside(true);
        mDatePicker.setTitle("Wähle ein Datum");
        mDatePicker.show();

Но это не работает правильно.Щелчок на фоновой ошибке решается.Но теперь Done Button перестает работать.

1 Ответ

0 голосов
/ 06 октября 2018

Простой диалог, содержащий DatePicker.Таким образом, Вы можете установить значение «без отмены».

с использованием setCancelable API

.setCancelable (false);

Ссылка на диалог

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...