代码在没有正确顺序的情况下继续运行
Posted
技术标签:
【中文标题】代码在没有正确顺序的情况下继续运行【英文标题】:code keeps running without proper sequence 【发布时间】:2019-06-02 22:24:39 【问题描述】:在我的代码中,我有一个日期和时间选择器....但由于某种原因,代码不会等到我选择任何东西,一旦 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】:但由于某种原因,代码不会等到我选择任何内容,并且一旦显示 mDateSetListener 对话框,Log.d 就会在 Logcat 中显示今天的日期。
这是因为,onDateSet
是某种异步调用(等待用户执行操作),只有当用户点击所需的日期表单时才会触发DatePickerDialog
第一次显示对话框时,它没有显示 mTimeSetListener,我必须再次请求它才能正常工作
-- -- --
【讨论】:
这就是重点......代码在我选择日期之前运行 Log.d......并且我第一次选择日期...... timePickerDialog 不运行我必须再次运行 datePickerDialog 才能正常工作 代码将在您选择日期之前运行 Log.d,如答案中所述 那么我怎样才能以不同的方式工作(如果可能的话) 如果要在用户选择日期后打印天的值,请将代码行移动到onDateSet()
内
它不只是打印......我希望代码在选择完成之前停止,因为选择之后的内容(我没有包括)取决于选择的日期以上是关于代码在没有正确顺序的情况下继续运行的主要内容,如果未能解决你的问题,请参考以下文章