1

我有一个带有片段容器布局的活动,在该布局中我加载了一个片段 A,它有一个列表视图(列表视图从 Web 加载数据)。现在单击列表视图项目我想显示详细视图。为此,我正在加载另一个片段 B,它是细节片段。现在首先我使用

FragmentTransaction ft = ((FragmentActivity) context).getSupportFragmentManager().beginTransaction();
                    ft.replace(R.id.fragmentsContainerLayout, new ScheduleDetailsFragment());
                    ft.addToBackStack(null);
                    ft.commit();

但是使用替换删除包含列表视图的先前片段 A 并再次按下它会重新加载片段 A 的 onCreateView 方法及其列表视图数据。我想阻止它在后台再次加载片段 A(或向网络服务器发送调用)。我想保持片段 A 状态及其列表视图滚动位置。为此,我使用了第二个选项,即

FragmentTransaction ft = ((FragmentActivity) context).getSupportFragmentManager().beginTransaction();
                        ft.add(R.id.fragmentsContainerLayout, new ScheduleDetailsFragment());
                        ft.addToBackStack(null);
                        ft.commit();

如果我使用 add() 则片段 B 加载到片段 A 的顶部,并且片段 A 仍然可见。它显示两个片段相互重叠且透明。我还遇到了另一个解决方案,即使用 show() 和 hide() 方法。但我不认为这是实现这一目标的有效方法。任何人都可以提出一个有效的解决方案吗?

4

0 回答 0