【发布时间】:2013-04-17 19:59:17
【问题描述】:
我通过隐藏最后一个片段并添加一个新片段(参见下面的代码)在片段之间切换 - 将其添加到 back-stack 也是如此。这样,用户可以在片段之间快速切换,而无需重新加载片段数据。
这在应用被杀死之前运行良好(场景:用户使用其他几个应用,而我的应用被持久化并被杀死)。
当用户打开应用程序时,该应用程序正在恢复并且所有片段都显示出来 - 重叠彼此。
问题:如何恢复已恢复的片段以隐藏状态?也许我缺少一些标志?某处?也许有更好的解决方案可以在片段之间快速切换(无需重新加载数据)?
添加片段的示例代码 - 单击某处时使用不同的片段多次调用:
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.hide(lastFragment);
fragmentTransaction.add(newFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
lastFragment = newFragment;
【问题讨论】:
-
当使用
replace(而不是hide)时,当然没有重叠。但是当切换回前一个片段时,它会重新加载——这是我想要阻止的。 -
[旁注]
hide与replace的另一个非常重要的优势是使用后退按钮时(无论应用程序是否被杀死)。当隐藏而不是替换并按下后退按钮时,前一个片段会弹出而不重新加载其数据,因为它已经存在。 -
在我看来,这几乎是任何应用程序都需要的东西,我希望这很容易并且有据可查:(
-
我认为这是 android 的错误,不知道为什么它仍然在 android 5 中发生。