我在我的应用中执行以下操作:
1.我有两个EditText
框。
点击其中的每一个时,会弹出DatePickerDialog
。
我在Datepicker中设置了日期。
关闭对话框后,日期将在edittext中设置。
问题如下。
在datepicker中设置日期后,datepicker始终显示我已设置的日期,而不是当前日期。即如果我将日期设置为2014-09-09,当我再次点击edittext时,datepicker上的日期显示为上述设定日期,而不是当前日期。
任何人都可以指导我如何逐步解决这个问题。
我的代码如下:
@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(" "));
}
}
答案 0 :(得分:0)
来自docs:
对于给定id,第一次调用onCreateDialog(int,Bundle)将使用相同的id。此后,对话框将自动保存并恢复。
如果您坚持使用这些已弃用的活动管理对话框而不是DialogFragment
,请将重置日期的初始化代码移至onPrepareDialog()
。
答案 1 :(得分: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;
}
它将完成这项工作......