【问题标题】:Trouble using DatePicker in Android在 Android 中使用 DatePicker 时遇到问题
【发布时间】:2013-09-12 09:34:52
【问题描述】:

我使用以下代码实现了一个DatePicker 对话框:

static final int DATE_PICKER_FROM = 0;
DatePickerDialog.OnDateSetListener from_dateListener;
private EditText editDateStart;
...
private void addListenersToButtons(){
    editDateStart = (EditText)findViewById(R.id.editDateStart);

    editDateStart.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            showDialog(DATE_PICKER_FROM);
        }
    });
}

@Override
protected Dialog onCreateDialog(int id) {
    // TODO Auto-generated method stub
    switch (id) {
    case DATE_PICKER_FROM:
        return new DatePickerDialog(this, from_dateListener,2,10,2013);
    }
    return null;
}

以下是监听器的初始化:

 from_dateListener = new DatePickerDialog.OnDateSetListener() {

            // when dialog box is closed, below method will be called.
            public void onDateSet(DatePicker view, int selectedYear,
                    int selectedMonth, int selectedDay) {
                    int year = selectedYear;
                    int month = selectedMonth;
                    int day = selectedDay;

            editDateStart.setText(
                    new StringBuilder()
                        .append(pad(day)).append("/")
                        .append(pad(month + 1)).append("/")
                        .append(year).append(" "));
            }
        };

当点击 EditText 字段时,对话框显示如下:

所以,我尝试使用代码设置的日期:

DatePickerDialog(this, from_dateListener,2,10,2013);

不出现。如您所见,日期是 1 gen 1900。

当我尝试在日期选择器中更改日期时,会出现另一个问题。例如我设置了从 1 到 2,结果如下:

日历已到 2036 年 2 月 2 日。为什么?

注意:如果我将日期选择器中的年份从 1900 更改为 1901,则日历年更改为 2037,但如果我在日期选择器中将日期设置为 1902,日历中的年份将变为 1902(依此类推)

【问题讨论】:

    标签: android android-dialog android-datepicker


    【解决方案1】:

    请阅读DatePickerDialog构造函数的文档。参数如下:

    public DatePickerDialog(上下文上下文,DatePickerDialog.OnDateSetListener callBack,int year,int monthOfYear,int dayOfMonth)

    参数

    context 对话框运行的上下文。

    callBack 如何通知家长日期已设置。

    年份对话的初始年份。

    monthOfYear对话框的初始月份。

    dayOfMonth 对话的第一天。

    所以调用应该是:

    DatePickerDialog(this, from_dateListener, 2013, 10, 2);
    

    【讨论】:

    • 你是对的@Rajesh。现在它正在工作。还有一个问题:如果我打开对话框并更改日期而不按 IMPOSTA 按钮,只需按 ANNULLA 对话框就会关闭,但是当我重新打开它时,我之前设置的日期仍然存在。每次重新打开对话框时,如何将日期设置为 2013 年 2 月 11 日?
    • 你看过updateDate方法吗?
    【解决方案2】:

    做这样的事

    DatePickerDialog dp = new DatePickerDialog(mContext, datePickerListener, Year, Month, Day);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-04
      • 2021-03-01
      相关资源
      最近更新 更多