在我的代码中,我有一个日期和时间选择器....但是由于某种原因,代码不会等到我选择任何东西,并且一旦显示了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));
}
先谢谢您
答案 0 :(得分:0)
但是由于某种原因,代码不会等到我选择任何东西后,一旦显示了mDateSetListener对话框,Log.d就会显示在今天的Logcat中。
这是因为onDateSet
是某种异步调用(等待用户执行操作),并且只有在用户点击所需的日期格式DatePickerDialog
也是第一次显示该对话框,它没有显示mTimeSetListener,我必须再次请求它才能正常工作
---