在使用系统的Detapicker提供用户选择日期时,遇到了一个很奇怪的问题。当用户在Datepicker中手动输入日期后,点击“确定”返回的是当前的日期,而不是用户输入的日期。网上找了很久都没有找到方法解决。最后在网上找到一个解决方法,就是当用户点击“确定”的时候,将Datepicker的焦点清除,就能获取到用户输入的日期。
日期选择代码:
AlertDialog.Builder builder = new AlertDialog.Builder(
AnnounceActivity.this);
builder.setTitle("选择日期");
final DatePicker datePicker = new DatePicker(MainActivity.this);
builder.setView(datePicker);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
datePicker.clearFocus();
int year = datePicker.getYear();
int month = datePicker.getMonth();
int dayOfMonth = datePicker.getDayOfMonth();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(year);
int newMonth = month + 1;
if (newMonth < 10) {
stringBuilder.append("-0").append(newMonth);
} else {
stringBuilder.append("-").append(newMonth);
}
if (dayOfMonth < 10) {
stringBuilder.append("-0").append(dayOfMonth);
} else {
stringBuilder.append("-").append(dayOfMonth);
}
Toast.makeText(MainActivity.this, year + "年" + (month + 1) + "月" + dayOfMonth + "日", Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", null);
builder.show();
就是在点击“确定”的时候添加: datepicker.clearFocus();