保留片段选项卡更改的视图

时间:2013-05-07 16:16:59

标签: android android-fragments android-view android-fragmentactivity

我有一个标签式应用程序,比如2个标签。它最初是使用ActivityGroup开发的。但是,在意识到ActivityGroup中不支持多窗格之后,我决定使用片段。在讨论问题之前,让我向您简要介绍一下该应用程序。

所以,就像我之前说的那样是一个标签式应用程序

TabA---> Activity1---> Activity2---> Activity3

TabB---> Activity4---> Activity5----> Activity6

这是我以旧的基于活动组的应用程序的工作模式。

现在有了片段,这将变成类似下面的内容

FragmentActivity---> TabAFragment---> FragmentA1---> FragmentA2
               |
                ---> TabBFragment---> FragmentB1---> FragmentB2

每个片段在初始加载时连接到服务器以获取数据。

在事务中,我每次添加时都会替换片段。

FragmentTransaction ft = manager.beginTransaction();
ft.replace(R.id.realtabcontent, fragment);
ft.commit();

观察到的内容

这两个标签片段只有一个活动(FragmentActivity-创建标签)。我为所有标签共享此活动。例如,我在tabB中加载fragmentB1-膨胀视图,从服务器获取数据并在ListView中显示。然后我切换到其他tabA并​​加载fragmentA1。到现在为止还挺好。现在,如果我回到tabB,我想看到之前加载的listView。会发生什么,它从一个方块开始。

这是我对碎片的第一手经验。我做了一些研究;但它并没有真正帮助修复我的。

如何保留已加载的视图?

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

嗨,我对所有碎片也很新。但是,我正在做类似的事情,发现我需要将当前片段添加到后端堆栈中。

ft.addToBackStack (null);

此行将在您的comit之前,因此您的代码将变为:

FragmentTransaction ft = manager.beginTransaction();
ft.replace(R.id.realtabcontent, fragment);
ft.addToBackStack (null);
ft.commit();

希望这有一些用处。