相关疑难解决方法(0)

如何在Backstack事务后保留片段数据?

我有一个活动,包含片段'list',点击其中一个项目后会将其自身替换为'content'片段.当用户使用后退按钮时,他再次被带到"列表"片段.
问题是片段处于默认状态,无论我尝试持久化数据.

事实:

  1. 两个片段通过创建public static TheFragment newInstance(Bundle args),setArguments(args)Bundle args = getArguments()
  2. 两个片段都在同一级别,它直接位于FrameLayout父活动的内部(即不是嵌套片段)
  3. 我不想打电话setRetainInstance,因为我的活动是主/细节流程,在大屏幕上有2个窗格布局.7"平板电脑有1个纵向画面和2个横向画面.如果我保留'list'片段实例,它会(我认为)搞乱屏幕旋转
  4. 当用户点击"列表"片段中的某个项目时,"内容"片段会FragmentTransaction#replace(int, Fragment, String)以相同的ID但不同的标签显示
  5. 我确实覆盖了onSaveInstanceState(Bundle),但是这并不总是被框架调用,正如文档所述:"在很多情况下,片段可能会被大部分拆除(例如放置在没有UI显示的后台堆栈上),但是它的状态在其拥有的活动实际上需要保存其状态之前不会被保存."
  6. 我正在使用支持库

从上面的子弹5中,我猜测片段事务后需要恢复内存的低端设备可能会调用Fragment#onSaveInstanceState(Bundle).但是,在我的测试设备(Galaxy Nexus和Nexus 7)上,框架不会调用该方法.所以这不是一个有效的选择.

那么,我如何保留一些片段数据呢?传递给捆绑Fragment#onCreate,Fragment#onActivityCreated等始终null.

因此,我无法从全新的片段启动到后台堆栈恢复有所作为.

注意:可能的相关/重复问题

android android-fragments back-stack

9
推荐指数
1
解决办法
8520
查看次数

如何检查片段是否从后台恢复?

是否有可能检查是否Fragment从后台恢复?例如,如果我有一个,然后由另一个替换,然后通过点击"返回"android按钮返回到上一个?

android fragment

6
推荐指数
1
解决办法
3474
查看次数

标签 统计

android ×2

android-fragments ×1

back-stack ×1

fragment ×1