Когда я выбираю дату в CalendarView, calendarView.getDate () не изменяется - PullRequest
0 голосов
/ 14 марта 2020

У меня есть следующий код, который обрабатывает выбор даты в CalendarView. Проблема заключается в том, что calendar.getDate () по-прежнему возвращает текущую дату, а не дату, выбранную в CalendarView. Но значения года, месяца и дня месяца верны. У меня есть идея просто установить эти значения в календаре, но мне не нравится этот метод. Пожалуйста, объясните, как сделать calendarView.getDate () возвращать результат, который я выбрал в CalendarView

    public static AlertDialog getTextDialog(Context ctx) {
    View view = LayoutInflater.from(ctx).inflate(R.layout.calendar_dialog, null);
    AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
    builder.setView(view);
    CalendarView calendar = view.findViewById(R.id.calendarView);

    calendar.setOnDateChangeListener((view1, year, month, dayOfMonth) -> {
        Log.e("DATE", Long.toString(view1.getDate()));
        Log.e("DAY", Long.toString(dayOfMonth));
    });

    return builder.create();
}

1 Ответ

1 голос
/ 14 марта 2020

Очевидно, что выбор и настройка не одинаковы для CalendarView. Как вы сказали, просто обновите его вручную в слушателе, чтобы вы могли получить к нему доступ позже с помощью getDate ().

calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
    @Override
    public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month, dayOfMonth);

        view.setDate(calendar.getTimeInMillis());

        Log.d("calendar", String.valueOf(view.getDate()));
    }
});
...