我创建了一个DatePickerPreference,即我扩展了DialogPreference并在其中创建了一个DatePicker对象并让它几乎完美地工作.当您单击上下箭头并保存所选值时,它会更改值.
但是,如果您在字段内单击并在那里键入新值,则不会保存更新的值!使用箭头时,始终调用onDateChanged()方法; 当用户进入该字段并对其进行编辑时,如果他选择另一个字段,它将仅调用onDateChanged(在这种情况下,如果他编辑最后一个字段并且只是点击OK,则将忽略最后一次编辑).我发现Eric Besette在他的TimePickerPreference上发布了类似的问题
这是我的代码:
public class DatePickerPreference extends DialogPreference implements
OnDateChangedListener, OnDateSetListener {
@Override
protected View onCreateDialogView() {
DatePicker picker = new DatePicker(getContext());
mDate = getPersistedLong(System.currentTimeMillis());
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(mDate);
int day = calendar.get(Calendar.DAY_OF_MONTH);
int month = calendar.get(Calendar.MONTH);
int year = calendar.get(Calendar.YEAR);
picker.init(year, month, day, this);
return picker;
}
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
mDate = (new Date(year - 1900, monthOfYear, dayOfMonth)).getTime();
}
public void onDateSet(DatePicker view, int year, int monthOfYear, …Run Code Online (Sandbox Code Playgroud)