код продолжает работать без правильной последовательности - PullRequest
0 голосов
/ 08 января 2019

В моем коде у меня есть средство выбора даты и времени .... но по какой-то причине код не ждет, пока я ничего не выберу, и как только появится диалоговое окно mDateSetListener, Log.d отобразится в сегодняшней дате Logcat. также в первый раз, когда отображается диалоговое окно, он не показывает mTimeSetListener, и мне нужно запросить его во второй раз, чтобы он работал должным образом вот мой код

static void dateAndTimePicker(final Context context, final ListView selectedFood, final int type) {

    contextGlobal = context;
    dateTime = new int[5];
    cal = Calendar.getInstance();
    int year = cal.get(Calendar.YEAR);
    int month = cal.get(Calendar.MONTH);
    int day = cal.get(Calendar.DAY_OF_MONTH);

    DatePickerDialog dialog = new DatePickerDialog(contextGlobal,
            android.R.style.Theme_Holo_Light_Dialog_MinWidth, mDateSetListener, year, month, day);
    Objects.requireNonNull(dialog.getWindow()).setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    dialog.show();

    mDateSetListener = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker datePicker, int year, int month, int day) {
            month = month + 1; /*january is 0 (months start with 0 not 1)*/
            Log.d("date is", month + "/" + day + "/" + year);
            dateTime[0] = year;
            dateTime[1] = month;
            dateTime[2] = day;
            hour = cal.get(Calendar.HOUR_OF_DAY);
            minute = cal.get(Calendar.MINUTE);

            TimePickerDialog timePickerDialog = new TimePickerDialog(contextGlobal,
                    android.R.style.Theme_Holo_Light_Dialog_MinWidth, mTimeSetListener, hour, minute, false);
            timePickerDialog.show();
        }

    };

    mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker timePicker, int hour, int minute) {
            Log.d("Time is", hour + ":" + minute);
            dateTime[3] = hour;
            dateTime[4] = minute;
            addFood(contextGlobal, dateTime, selectedFood, type);

        }
    };

    Log.d("date", String.valueOf(day));

}

заранее спасибо

1 Ответ

0 голосов
/ 08 января 2019

, но по какой-то причине код не ждет, пока я ничего не выберу, и как только появится диалоговое окно mDateSetListener, Log.d отобразит сегодняшнюю дату Logcat.

Это потому, что onDateSet является своего рода асинхронным вызовом (ожидает, когда пользователь выполнит действие), и будет срабатывать только тогда, когда пользователь нажимает нужную форму даты DatePickerDialog

также в первый раз, когда отображается диалоговое окно, оно не показывает mTimeSetListener, и я должен запросить его во второй раз, чтобы он работал должным образом

- - -

...