“中的方向怪癖”;你好,DatePicker“;Android SDK教程
如果您创建本教程中描述的应用程序 更改日期,然后旋转设备,您将注意到以下情况:“中的方向怪癖”;你好,DatePicker“;Android SDK教程,android,orientation,Android,Orientation,如果您创建本教程中描述的应用程序 更改日期,然后旋转设备,您将注意到以下情况: 应用程序的textview日期会按预期重置(因为活动会被销毁并重新创建),但如果您点击“更改日期”按钮,则会保留您在旋转之前设置的日期。SDK文档不鼓励使用onConfigChanged=“orientation | screenSize”捕捉方向更改,因此我的问题是:让日期选择器的默认值与应用程序中使用的成员变量保持一致的“最佳”方法是什么?我不太关心成员变量的值是否被保留,或者选择器是否与它们一起重置为今天的日期
应用程序的textview日期会按预期重置(因为活动会被销毁并重新创建),但如果您点击“更改日期”按钮,则会保留您在旋转之前设置的日期。SDK文档不鼓励使用onConfigChanged=“orientation | screenSize”捕捉方向更改,因此我的问题是:让日期选择器的默认值与应用程序中使用的成员变量保持一致的“最佳”方法是什么?我不太关心成员变量的值是否被保留,或者选择器是否与它们一起重置为今天的日期,但我觉得不一致性看起来很松散。您可以将
日期选择器对话框
成员变量保存在OnSaveState
中,然后在onCreate
中恢复它们。比如:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("day", mDay);
outState.putInt("month", mMonth);
outState.putInt("year", mYear);
}
要完成上述答案,您可能会执行如下操作,如下所示(在活动中覆盖以下两种方法):
@Override protected void onSaveInstanceState (Bundle outState)
{
super.onSaveInstanceState (outState);
outState.putInt ("YEAR", mDatePicker.getYear ());
outState.putInt ("MONTH", mDatePicker.getMonth ());
outState.putInt ("DAY", mDatePicker.getDayOfMonth ());
}
@Override protected void onRestoreInstanceState (Bundle savedInstanceState)
{
super.onRestoreInstanceState (savedInstanceState);
mDatePicker.updateDate (savedInstanceState.getInt ("YEAR"),
savedInstanceState.getInt ("MONTH"),
savedInstanceState.getInt ("DAY"));
}