我有一个活动,包含片段'list',点击其中一个项目后会将其自身替换为'content'片段.当用户使用后退按钮时,他再次被带到"列表"片段.
问题是片段处于默认状态,无论我尝试持久化数据.
事实:
public static TheFragment newInstance(Bundle args),setArguments(args)并Bundle args = getArguments()FrameLayout父活动的内部(即不是嵌套片段)setRetainInstance,因为我的活动是主/细节流程,在大屏幕上有2个窗格布局.7"平板电脑有1个纵向画面和2个横向画面.如果我保留'list'片段实例,它会(我认为)搞乱屏幕旋转FragmentTransaction#replace(int, Fragment, String)以相同的ID但不同的标签显示onSaveInstanceState(Bundle),但是这并不总是被框架调用,正如文档所述:"在很多情况下,片段可能会被大部分拆除(例如放置在没有UI显示的后台堆栈上),但是它的状态在其拥有的活动实际上需要保存其状态之前不会被保存."从上面的子弹5中,我猜测片段事务后需要恢复内存的低端设备可能会调用Fragment#onSaveInstanceState(Bundle).但是,在我的测试设备(Galaxy Nexus和Nexus 7)上,框架不会调用该方法.所以这不是一个有效的选择.
那么,我如何保留一些片段数据呢?传递给捆绑Fragment#onCreate,Fragment#onActivityCreated等始终null.
因此,我无法从全新的片段启动到后台堆栈恢复有所作为.
注意:可能的相关/重复问题
是否有可能检查是否Fragment从后台恢复?例如,如果我有一个,然后由另一个替换,然后通过点击"返回"android按钮返回到上一个?