手动输入
问题描述:
实现在Android中DatePicker
或DatePickerDialog
容易。但是,当涉及到数据存储,我有这些类问题:手动输入
如果您使用微调(+或 - 按钮)更改日期,一切工作正常。事件“更改日期”或“日期设置”被调用,您可以获取用户输入的值。
但是当一年手动输入到输入字段(通过键盘)和用户,然后点击“保存”对话框中,将不会有任何的事件调用,你就无法得到那个手动输入值。
当用户改变与滑块手动重新输入后,在今年的东西它才有效。因为当你使用滑块时,事件被触发。
这是正常的行为吗?我该如何实现所需的行为,即当用户手动输入某些内容并点击“保存”时触发事件?
在此先感谢!
答
就明确的重点,而Android将手动输入设置的数字
例如:。
DatePicker datePicker = fidnViewById(R.id.dp);
当像onClick()
那样保存时,添加 datePicker.clearFocus()
;
这必须工作。
答
如果您查看Date Picker Example,只要用户单击对话框上的“SET”按钮,就会收到DatePickerDialog.OnDateSetListener回调。
看一下对话框下方
即使你使用键盘输入日期,日期本身不被接受,直到你单击该对话框中的“设置”按钮,即当DatePickerDialog.OnDateSetListener回调被称为
答
我有同样的问题,接受的答案真的帮了我很多。我的情况有点不同,但我使用的是DatePickerDialog
。以下是DatePicker
最终如何正常工作。
首先声明变量,然后定义它们。
private DatePickerDialog.OnDateSetListener date;
private DatePickerDialog mDatePickerDialog;
private Calendar myCalendar;
// Get the calendar instance
myCalendar = Calendar.getInstance();
// Define the date set listener first.
date = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// Do something with year, monthOfYear and dayOfMonth
}
};
// Now define the DatePickerDialog
mDatePickerDialog = new DatePickerDialog(context, date, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH));
mDatePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Set", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
DatePicker datePicker = mDatePickerDialog.getDatePicker();
// The following clear focus did the trick of saving the date while the date is put manually by the edit text.
datePicker.clearFocus();
date.onDateSet(datePicker, datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth());
}
});
然后一个按钮的onClick
mDatePickerDialog.show();
它的工作原理就像一个魅力!谢谢内 – 2015-05-22 06:24:19