可能重复:
Separate Back Stack for each tab in Android using FragmentsAndroid的碎片查看状态的标签主机内
我最近开始了FragmentActivity内的一个标签主机内部片段的应用程序的工作。该由于TabActivity类现在已被弃用,因此Android文档说要做到这一点。为了使用片段,我使用了android v4支持库。
目前我的应用程序由一个片段存在的片段组成。导航到新的片段我一直在使用下面的代码(这似乎基于文档是正确的)选项卡中:
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(containerId, newFragment);
ft.addToBackStack(null);
ft.commit();
一切都很好,好,直到我打的返回键导航到以前的片断,并意识到我的所有视图状态已经被破坏了......发生的事情是,onCreateView()方法在我之前的片段上再次被调用,即使其视图先前已经被创建......为什么会这样呢?我已经搜索了如何正确地维护片段状态,但我似乎无法找到像这样的体面文件。
我再尝试是使用
ft.add(containerId, newFragment);
代替
ft.replace(containerId, newFragment);
这实际上做得很不错的,我的视图状态保留 - onCreateView()每次不叫我以前的片段被显示。然而,我后来注意到,即使我看不到这些组件,我仍然可以与位于当前片段下面的以前片断的组件(按钮等)进行交互。我读的地方,下面的方法应该是用来保存一些状态:
public void onSaveInstanceState (Bundle outState)
我实现了这个方法,但是,这是从来没有叫!我也注意到过去的onCreateView()和onActivityCreated()方法的bundle总是空的。当然,谷歌还没有使这种事情变得如此困难,我必须错过一些东西?任何关于如何正确维护片段的视图状态的帮助将不胜感激!
谢谢。
其他人都遇到过吗?请帮忙! :) –
好吧,所以当简单地在片段之间导航时,看起来状态问题并不是问题,而是当涉及另一个活动时...请查看我已记录的错误(问题20120):http://代码。 google.com/p/android/issues/detail?id=20120 –