1

我有一个选项卡式应用程序,比如 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。发生的事情是一切都从第一方开始。

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

如何保留已加载的视图?

有什么想法吗?

4

1 回答 1

0

嗨,我对所有片段也很陌生。但是,我正在做类似的事情,发现我需要像这样将当前片段添加到后台堆栈。

ft.addToBackStack (null);

此行将在您提交之前进行,因此您的代码变为:

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

希望这有一些用处。

于 2016-11-14T15:39:25.033 回答