我使用以下代码实现了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。
当我尝试更改datepicker中的日期时,会出现另一个问题。例如,我已经从1设置为2,结果如下:
日历已经到了2036年2月20日。为什么?
注意:如果我将日期选择器中的年份从1900更改为1901,则日历年更改为2037,但如果我在日期选择器中将日期设置为1902,则日历中的年份将变为1902(依此类推)
答案 0 :(得分:1)
请阅读DatePickerDialog
构造函数的文档。参数如下:
public DatePickerDialog (上下文上下文,DatePickerDialog.OnDateSetListener callBack,int year,int monthOfYear,int dayOfMonth)
<强>参数强>
context 对话框要运行的上下文。
callBack 如何通知家长日期已设置。
年对话框的第一年。
monthOfYear 对话框的初始月份。
dayOfMonth 对话框的第一天。
所以电话应该是:
DatePickerDialog(this, from_dateListener, 2013, 10, 2);
答案 1 :(得分:1)
做这样的事情
DatePickerDialog dp = new DatePickerDialog(mContext, datePickerListener, Year, Month, Day);