可能这是一个众所周知的话题,但我没有找到任何"通用"溶液
主要问题有两个:
fragment
放到backstack
时,永远不会调用onSavedInstanceState
fragment's
中实例化onCreate
次观看?此时我的问题是:由于fragment lifecycle
每隔onCreateView
经过resume
,因为我们无法在{{1}中实例views
}};为什么每次显示onCreate
时我们都必须重新创建views
?必须有fragment
Activity
中的方式。
我们可以通过添加onCreate
并检查它是否有值来避免,但这意味着添加class-scoped boolean
,这不是最佳解决方案。另一个解决方案可能是this one,但它也是一种解决方法,它也有一些限制。
是否有解决此问题的内置(或标准)解决方案?
答案 0 :(得分:1)
我不清楚问题标题的含义 - 但我可以回答以下三点:
保存状态时会调用当片段放到backstack时,onSavedInstanceState永远不会被调用
onSavedInstanceState
- 只是添加到backstack并不会导致这种情况发生 - 如果有某些UI显示,则在暂停片段时会发生这种情况。实际上,解决这个问题的好答案是here (link)
为什么不能在onCreate中实例化片段的视图?
从活动的onPostResume
方法恢复片段,此时只能安全地触摸片段的视图。 (在片段内部,您可以使用onViewsCreated
)
为什么我们必须在每次显示片段时重新创建视图
这可以通过保留您的片段实例来避免(尽管有drawbacks)。您可以使用以下方式保留:
setRetainInstance(true)