【问题标题】:DatePickerDialog not adding days in DateDatePickerDialog 未在 Date 中添加天数
【发布时间】: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


【解决方案1】:

您能否发布您定义数字的代码部分。您的日期增量代码似乎没问题。

【讨论】:

  • 从这里看,问题主要出在数字上。
  • 已发布请查看上方部分:正在获取号码
  • 这应该是评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 1970-01-01
相关资源
最近更新 更多