onSaveInstanceState / onRestoreInstanceState用于对话框

时间:2012-10-10 14:53:44

标签: android dialog save restore

我试图找出onSaveInstanceState / onRestoreInstanceState如何使用对话框。 使用Acitivity很容易,因为在杀死/重新启动Activity时会调用它们。

我们的活动显示登录对话框。 何时是对话框的onSaveInstanceState / onRestoreInstanceState??/ / p>

当我们解开对象时会自动调用吗?

3 个答案:

答案 0 :(得分:1)

@theblitz:是的,从Activity管理Dialog的生命周期有点不方便。

我在Dialog中有getter方法来检索它的状态变量,然后我将它们存储在Activity的Bundle中。在onResume或onCreate of Activity中,我从Bundle中检索存储的变量,并将它们传递给Dialog的参数化构造函数以创建一个新的Dialog。所以现在我有了一个对话框,它给人一种天生的状态维护的幻觉。

答案 1 :(得分:1)

Dialog中的文件说:

  

注意:活动提供了管理创建,保存和管理的工具   恢复对话框。请参阅{@link Activity#onCreateDialog(int)},{@ link   Activity#onPrepareDialog(int,Dialog)},{@ link   Activity#showDialog(int)}和{@link Activity #dismissDialog(int)}。

那么如果你想知道什么时候对话框的onSaveInstanceState / onRestoreInstanceState被调用?您应该在Activity#onCreateDialog(int)中创建对话框,并向您显示对话框Activity#showDialog(int)。您可以看到Activity#performSaveInstanceState,它会调用Activity#saveManagedDialogs。但是你现在应该使用DialogFragment

答案 2 :(得分:0)

不应使用或期望对话框像常规活动一样工作。它们应该用于收集用户输入或显示信息。您可以使用复选框,文本视图等UI元素为它们创建自定义布局,并捕获用户信息并将其存储起来供以后使用。

在您的登录对话框中,通过创建包含用户名,密码等文本视图的自定义布局来获取用户数据,将此信息存储在您的应用中,然后根据需要使用它。

以下是关于如何正确使用对话框的官方文档的优秀指南:

http://developer.android.com/guide/topics/ui/dialogs.html