-1

我在我的应用程序中执行以下操作:

1.我有两个EditText盒子。

  1. 单击它们中的每一个都会DatePickerDialog弹出一个。

  2. 我在 Datepicker 中设置日期。

  3. 关闭对话框时,日期会在编辑文本中设置。

问题如下。

在 datepicker 中设置日期后,datepicker 始终显示我设置的日期,而不是当前日期。即,如果我在再次单击编辑文本时将日期设置为 2014-09-09,则日期选择器上的日期显示为上述设置日期,而不是当前日期。

谁能指导我如何逐步解决此问题..

我的代码如下:

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.edt_date_from:
        InputMethodManager imm = (InputMethodManager) getSystemService(this.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(edt_date_to.getWindowToken(), 0);

        edt = 1;
        showDialog(DATE_DIALOG_ID);
        break;
    case R.id.edt_date_to:
        getWindow().setSoftInputMode(
                WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        edt = 2;

        showDialog(DATE_DIALOG_ID);
        break;
}



   @Override
protected Dialog onCreateDialog(int id) {

    switch (id) {

    case DATE_DIALOG_ID:

        Calendar cal = Calendar.getInstance();

        int iDay,
        iMonth,
        iYear;

        iDay = cal.get(Calendar.DAY_OF_MONTH);
        iMonth = cal.get(Calendar.MONTH);
        iYear = cal.get(Calendar.YEAR);
        DatePickerDialog dp = new DatePickerDialog(this, pDateSetListener,
                iYear, iMonth, iDay);
        dp.updateDate(iYear, iMonth, iDay);

        return dp;

    }

    return null;

}




  private DatePickerDialog.OnDateSetListener pDateSetListener = new DatePickerDialog.OnDateSetListener() {

    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        years = year;
        month = monthOfYear;
        day = dayOfMonth;

        updateDisplay();

    }

};

public void updateDisplay() {
    // TODO Auto-generated method stub
    if (edt == 1) {
        date_frm.setText(new StringBuilder()

        .append(day).append("-").append(month + 1).append("-")
                .append(years).append(" "));
    } else {
        edt_date_to.setText(new StringBuilder()

        .append(day).append("-").append(month + 1).append("-")
                .append(years).append(" "));
    }
}
4

2 回答 2

0

文档

第一次为给定 id 调用 onCreateDialog(int, Bundle) 时,将使用相同的 id 进行调用。此后,对话框将自动保存和恢复。

如果您坚持使用这些已弃用的活动管理对话框而不是DialogFragments,请将重置日期的初始化代码移动到onPrepareDialog().

于 2014-11-12T06:30:20.247 回答
0

您可以覆盖onCreateDialog()活动中的方法

只需在您的编辑文本中添加一个 onClick 侦听器,并在 onClick 方法中有此代码

showDialog(999);

然后

@Override
protected Dialog onCreateDialog(int id) {
    if (id == 999) {
        Date date = new Date();
        int year=date.getYear();
        int month=date.getMonth();
        int day=date.getDay();
        return new DatePickerDialog(this, myDateListener, year, month, day);
    }
    return null;
}

它会完成这项工作......

于 2014-11-12T06:30:32.460 回答