gpt4 book ai didi

android - 在方向更改时保存 UI - 如果保留 Fragment,onSaveInstanceState 无法按预期工作

转载 作者:IT老高 更新时间:2023-10-28 23:11:47 26 4
gpt4 key购买 nike

使用兼容库 v1(由于某些错误,不使用 v2|3); this question 的变体.

我有一个 fragment ,它的 UI 有各种控件,我想在方向改变时保持它们的状态。

父 Activity 在方向更改时被销毁(请不要告诉我 list 更改以避免 Activity 重新创建!!!!)。

fragment 调用setRetainInstance(true)

1) 现在我的理解是,具有唯一 ID 的 View 应该在改变方向时保留一些状态。鉴于此,我希望 onCreateView|onActivityCreated 中有一个非空包,但它是空的。

2) 无论如何,如果我在 onSaveInstanceState 中保存状态(确保我调用 super),我仍然会在 'onCreateView|onActivityCreated` 中得到一个空包

3) 如果我不调用 setRetainInstance(true) 那么即使我没有`onSaveInstanceState' 方法。

我的问题是,这是否按预期工作并且我对生命周期的理解被打破了?无论如何,我猜对我来说最好的方法是保留 fragment ,然后自己在 fragment 中保持控件的状态。

提前致谢。彼得。

最佳答案

如果你使用 setRetainInstance(true) 那么这个包当然是空的。 fragment 不会被销毁,而只是从当前 Activity 中分离出来并附加到新 Activity 上。只有当 fragment 被销毁时,您才会得到一个包含您保存在 onSaveInstanceState 中的值的包。只需删除 setRetainInstance(true) 并使用 onCreateView() 中保存的值来设置您的自定义 View 。

关于android - 在方向更改时保存 UI - 如果保留 Fragment,onSaveInstanceState 无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7836250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com