如何在屏幕旋转时保留日期时间对话框的状态?

5
在屏幕方向改变时,Activity 和日期时间对话框都会被重新创建。我想保存用户更改的日期时间对话框状态。
在我关闭对话框之前,我想保留日期时间对话框的状态。
请注意,我可以在 onSaveInstanceState 中关闭对话框,在那里我有 bundle 可用。但是,当活动进入暂停状态时也会调用该方法,在这种情况下,我不想关闭对话框。因此,我决定在 onDestroy 方法中关闭它,但是我没有 bundle 对象。这就是为什么我面临这个问题。是否有办法在 onDestroy 中访问 bundle?或者您对我的问题有任何其他建议,将不胜感激。
@Override
protected void onDestroy() {
    if(dateTimeDialog !=null && dateTimeDialog.isShowing())
    {
        //<HERE I WANT THE STATE TO BE SAVED IN THE BUNDLE>
        dateTimeDialog.dismiss();
    }
    super.onDestroy();
}

基本上,如果用户离开我们的应用程序,我们会锁定该应用程序,并在解锁屏幕和视图对话框时恢复。如果我们在onSavedInstanceState中解除对话框,则在解锁应用程序后,它会调用onRestart,start和resume方法,其中没有将Bundle实例作为参数提供。

此外,由于我们有横向和纵向的分开布局,因此我们无法在清单文件中设置configChanges =“orientation”。


2
DatePickerDialog 类具有 onSaveInstanceState()onRestoreInstanceState() 方法。 - S.D.
2个回答

0

在活动标签中的清单文件中使用以下行

android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"

喜欢

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
    android:name="com.example.demo.MainActivity"
    android:label="@string/app_name"
    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

在您的活动中重写以下方法。

@Override
public void onConfigurationChanged(Configuration newConfig) {
    // TODO Auto-generated method stub
    super.onConfigurationChanged(newConfig);
}

不需要使用 onSaveInstanceState() 和 onRestoreInstanceState()

请在添加上述代码后告知状态


我已经更新了问题并说明了为什么我不使用configChanges。 - Swift

0

您仍然可以在onSaveInstanceState()中保留您的对话状态,但只能在onDestroy()中关闭对话框,这应该满足您的要求。尽管我不确定在onDestroy()中关闭对话框会有什么作用。


是的,没错!它运行良好,但我想在解锁设备后保留对话框,并且当我在onSaveInstanceState()中解除对话框时,当活动进入暂停状态时也会调用它,在这种情况下,我不想解除对话框。因此,决定在onDestroy方法中解除它,但我在那里没有bundle对象。 - Swift

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接