【发布时间】:2016-11-22 07:40:10
【问题描述】:
我正在使用 DatePickerDialog 和一些逻辑
类似使用if-else语句的逻辑
if(number == 1) // then add 1 day
else if (number == 2) // then add 3 days
要求:使用 Spinner 选择天数并使用 DatePicker 在对话框中显示特定日期
问题:问题是我在微调器中选择了第一项(这将在 dtdob 日期中添加 1 天),现在我选择了微调器项二(必须在 dtdob 日期中添加 3 天).... 但是当我点击 DatePicker 时,在 DatePicker 中显示相同的日期(我在 Spinner Item 选择 1 的情况下得到)而不是新的日期
例如 dtdob 日期是 2015 年 12 月 15 日
案例 1:First Spinner 已选择项目(2015 年 12 月 16 日) - 这是完全正确的
案例 2:我选择了 Second Spinner 项目(仍然得到 2015 年 12 月 16 日)而我期待 2015 年 12 月 18 日
代码:
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID1:
// set date picker as current date
DatePickerDialog dpDialog1 = new DatePickerDialog(this, datePickerListener1, year1, month1, day1);
DatePicker datePicker1 = dpDialog1.getDatePicker();
Calendar c = Calendar.getInstance();//get the current day
c.setTime(dtdob); // this is the date I am getting from somewhere
if (number == 1) {
c.add(Calendar.DATE, 1);
} else if (number == 2) {
c.add(Calendar.DATE, 3);
} else if (number == 3) {
c.add(Calendar.DATE, 7);
} else {
c.add(Calendar.DATE, 1);
}
datePicker1.setMinDate(c.getTimeInMillis());
return dpDialog1;
}
return null;
}
部分:正在获取数字
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int position, long id) {
number = spinner1.getSelectedItemPosition();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
【问题讨论】:
-
对于测试用例添加
if而不是else if -
我没有尝试重现该问题,但我会说确保每次选择 Spinner 项目时,都会调用该方法。该方法似乎只是第一次调用。
-
@IntelliJAmiya 尝试遇到同样的问题,我猜它不会用新值重置 DatePicker ......就像我的 dtdob 是 2014 年 12 月 18 日,我选择了微调器项目 1(它将添加 1 dtdob 日期中的一天)及其添加,我得到了 2014 年 12 月 19 日.....现在我选择了 Spinner Item 2(它必须在 dtdob 日期中添加 3 天)但是每当我点击 DatePicker 时直接显示 2014 年 12 月 19 日而我期待的是 2014 年 12 月 21 日
-
@PranitBankar 好的,你能给我指路吗...更多信息请查看我在 IntelliJAmiya 上发布的上述评论
-
您可以尝试将
number = spinner1.getSelectedItemPosition();替换为number = parent.getSelectedItemPosition(pos);
标签: java android datepicker android-datepicker datepickerdialog