我有两个片段,一个替换另一个。这些片段的UI发生了变化,我需要保持它的新状态。所以代码看起来很简单:
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
if (mStepTwo == null) {
mStepTwo = new QuizStepTwo();
mStepTwo.setListener(mStepTwoListener);
} else {
fragmentTransaction.remove(mStepTwo);
}
fragmentTransaction.replace(R.id.step_holder, mStepTwo);
fragmentTransaction.addToBackStack("second_step");
fragmentTransaction.commit();
然而,当我用第一个步骤替换第二个步骤时,例如按下后退按钮,它的UI状态回滚到初始状态。
我该如何保持状态?OnSaveInstanceState?还是更舒适的?
类似问题:标签主机中的Android片段视图状态,如何恢复Android片段视图状态
如果状态取决于您的应用程序数据,最好将它们保存在SharedPretions文件中并使用它来构建UI元素。
这个问题(及其解决方案)看起来与您试图做的事情类似。
然而,我可以想到的另一种解决方案是,不要用第二个片段替换第一个片段,而是将其隐藏(使用fragmentTransaction.hide()),或者分离。这样,当用户按BACK键时,片段将显示,其状态将保持完整。它可能需要更多的内存,但仍然可以工作,因为片段不会被销毁。
我没有用过这个,所以里程可能会有所不同。您可以尝试使用碎片管理器。saveFragmentInstanceState方法在替换片段时,然后使用片段。恢复片段时的setInitialSavedState方法。从文档中可以看出,它可能只在生成相同类型的新片段时才起作用,因此不确定这是否适用于您当前的实现。
当我创建时,我需要从另一个活动中删除一个片段,而不是创建它的活动: 然后我可以从片段中访问另一个活动,假设片段中有一个按钮可以打开另一个活动,现在,停留在该活动中我想删除启动该活动的片段,我得到该片段的参考号通过意图。所以我尝试: 但它给了我一个nullPointerException, 03-07 22:42:33.270 30993-30993/河马。rggmiranda。hiposleep
如何从堆栈中弹出特定片段,并从片段中删除其他片段?例如,这些是我的片段,我现在在E right know。 A- 想从E回到B,清除C和D。我怎么能做到这一点?
我有一个活动,将使用下面的方法动态添加片段。 FragmentA有一个文本视图。我的活动中有一个导航抽屉,我想根据在导航抽屉中单击的项目在片段(例如FragmentA、FragmentB和FragmentC)之间切换。当更改为另一个片段时,如何保存片段的状态。我已经实现了onSavedInstance(Bundle outState)和onActivityCreated(Bundle savedI
我有一个活动和两个片段。片断a和片断b。 我需要实现像,最初碎片应该在那里。在之后,单击FragmentB应该在那里。 我的第二段代码:
我搜索了很多信息,但没有一个明确的。有人能给出一个明确的解决方案和一个例子吗?
我有4个按钮来替换活动中的片段[片段A,片段B,片段C,片段D],然后我将片段A替换为活动,然后我将片段A中的值更改为片段A,之后我将片段B替换为片段A,并将片段C替换为片段B.但是我想把片段A替换成片段C。如何在片段A中保存状态。 当我提交片段时编写代码 要替换的图表 片段A ------- 片段B ------- 片段C ------- PS.我不想使用返回按钮返回片段A,我想替换片段A并在第