2013-07-26 52 views
1

我想通过UI片段中的配置更改(轮换)保留临时变量。我读过一般你不应该在UI片段上使用setRetainInstance(true)。我在这里有什么选择?我是否必须求助于使用带有setRetainInstance(true)附加到我的片段的非ui子片段?我想尽量避免,如果可能的话,孩子的碎片可能令人沮丧。Android:通过配置更改在UI片段中保留变量

此外,我真的希望保持碎片变量封装在片段本身。我可以将数据存储在附加到该活动的另一个非ui片段中,但我不想。似乎应该有一个更简单的方法来做到这一点。我希望片段有类似onRetainNonConfigurationInstance()作为后备。

感谢您的帮助。

回答

0

您可以在清单中设置android:configChanges="orientation"选项作为住房活动。这将导致所有方向更改调用而不是onDestroy()

0

我从来没有读过关于在UI片段中不使用setRetainInstanceState的信息。片段的一大优点是,只要使用该标志,您就可以通过配置更改保留状态。我在我所有的应用程序中使用它。只要给它一个:)

此外,子片段的不能保留其实例状态。

+0

如果您的Fragment按照[文档]位于背面堆栈,则不能使用'setRetainInstance'(http://developer.android.com/reference/android/app/Fragment.html#setRetainInstance(布尔值)) – Jonathan

+0

我不确定在什么情况下生效。我总是向后台添加碎片,并且它们都有setRetainInstance(true)。 – athor

+1

我一直在网上查找过去2小时。发现了大量的参考文献,暗示你不应该在UI片段中使用retaininstance,但除了谷歌的说明外,没有任何真正的官方说法,说不要在后台使用它们。主要关心似乎是内存泄漏和后台堆栈。 – craigrs84