在方向更改时保留DialogFragment状态

时间:2016-02-25 20:16:55

标签: android android-dialogfragment

我有一个DialogFragment,它从文件加载信息并在屏幕上创建一定数量的EditText字段(最小可以有5-6个,或者可以有几十个)。从文件中加载时,它们都具有初始值 用户还可以通过按下按钮添加其他文本字段。可以在现有字段之间的多个位置添加这些文本字段。一切都以编程方式添加。
当方向发生变化时,所有这些都会丢失。有没有办法防止这种情况发生?不是通过保存信息然后恢复它,而只是为了防止它发生?

创建对话框时的字段数取决于将从文件加载的信息。方向改变发生时的字段数不必相同。用户可以通过按下添加新字段的多个按钮中的一个来添加新字段。该对话框一次可以有30多个字段。保存状态然后恢复它可能需要一个复杂的方法(可能类似于将视图保存在静态列表中,或者可能是整个布局)。在对话框打开时完全防止方向改变可能是最好的选择,或者可能强迫它去景观,因为用户需要输入很多...

有没有更简单的方法来解决这个问题?

2 个答案:

答案 0 :(得分:2)

是的,您可以将属性android:configChanges="orientation|screenSize|keyboard|keyboardHidden"添加到Activity文件中的AndroidManifest.xml声明。

答案 1 :(得分:0)

在DialogFragment上调用setRetainInstance(true) 同时覆盖您已添加的活动中的onSavedInstance(Bundle) / OnViewStateRestored(Bundle)