在方向更改时,将重新创建活动并重新创建日期时间对话框。 我想保存用户已更改的日期时间对话框的状态。
在我关闭对话框之前,我想保留日期时间对话框的状态。
注意,我可以在onSaveInstanceState中关闭对话框,在那里我有可用的包。但是,当活动进入暂停状态时也会调用它,在这种情况下,我不想忽略该对话框。因此,决定在onDestroy方法上解除它,但我没有bundle对象。这就是我面临这个问题的原因。有没有办法在onDestroy中访问捆绑包?或者对我的问题的任何其他建议将不胜感激。
@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”的肖像。
答案 0 :(得分:0)
在actvity标签的清单文件中使用以下行
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()
添加ablove代码后请告知我状态
答案 1 :(得分:0)
您仍然可以在onSaveIsntanceState()
中保留对话状态,但只会忽略onDestroy()
中符合您要求的对话框。虽然我不确定在onDestroy()
完成对话解雇是什么。