2011-06-03 33 views
5

在它说,以确保您使用与操作栏标签时,这样当你切换标签的片段看起来像以前一样保存一个片段的状态的文档。这是如何完成的?使用样本处理选项卡时,切换选项卡时不会调用onSavedInstanceState,以便在何处保存状态?我是否在活动层面上做到这一点?我只想要这个国家是暂时的。的Android - 蜂窝 - 操作栏标签片段保存/恢复状态

谢谢

回答

1

Fragment.onSaveInstanceState()是适当的地方。这将在国家需要保存时被调用。如果未被调用,则不需要保存。

+0

这并不为我工作。如果您使用处理选项卡的示例方式,则当您取消选择选项卡并在选择选项卡时添加片段时,片段管理器会删除片段。如果你回到它的标签时有一个ListFragment,它甚至不记得你在列表中的位置。在3.0之前,如果你的标签有活动,系统会记住它们的状态。我正在尝试在HC中执行相同的操作,但未调用onSavedInstanceState。 – Nic 2011-06-03 19:46:06

+3

仅当片段被完全删除时才会调用onSaveInstance状态。例如,如果您更改屏幕方向。如果您想要保存某些内容,则在从该布局中删除选项卡时,如果选中此选项卡,则会覆盖显示的片段中的onPause。 – Janusz 2011-09-30 13:31:58

+0

如何获取更新包才能通过onActivityCreated块,如果我把它保存在的onPause - 我不能叫setArgument因为这个片段仍然活跃 – 2012-03-29 12:08:24

0

我跑进了完全相同的问题,并与感觉的冗余解决方案想出了(我认为这个功能将工作的路线更好),但它确实工作。解决方案是通过活动手动管理状态包。

中保存状态:在每一个片段,实现了一个名为类似的getState()函数将返回包含片段要保存任何状态数据捆绑。然后该活动应该在从视图中删除片段之前调用它。

中恢复状态:实现在接受它之前保存在同一个包中的片段的方法或构造,并解包束然而,应当使用是有意义的片段。当活动将片段添加回视图时,请通过先前提供的片段传递该包,并且应该设置该片段。