2013-07-26 49 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