【发布时间】:2015-08-07 23:39:27
【问题描述】:
情况:
我有一个带有 FrameLayout 的活动,我在其中更改片段。 我用:
getSupportFragmentManager().beginTransaction()
.replace(R.id.content, fragment)
.addToBackStack("name")
.commit)
一切正常,问题是当我返回堆栈时,前一个片段被重新加载并且所有数据都丢失了。
可能的解决方案:
- 恢复片段状态 - 我想避免这种情况,因为大部分数据都是从服务器检索的,并且需要很长时间
- 使用
.add(R.id.content, fragment)而不是.add(R.id.content, fragment)但在这种情况下,我的片段必须具有纯色背景,否则它们会相互重叠。问题是由于一些设计限制,我无法设置纯色背景。
问题:
我如何使用 '.add(R.id.content,fragment)' 并以某种方式隐藏它下面的片段,这样它就不会覆盖,我可以回到我离开它的状态的前一个片段。
【问题讨论】:
-
如果您不想弹出片段,请不要添加到后台堆栈。
-
那你为什么不调用另一个activity来保存新的fragment,这样你当前与fragment的activity就会被暂停。
-
@Deev 我想要弹出片段,我只是不想在当前片段下方可见。接受的答案解决了问题,谢谢
-
@Gatunox 我想留在同一个活动中,除了我的片段之外,屏幕上还有其他东西