在平板电脑上,我们有两个片段(同一数据的两个不同视图)并排放置。在移动设备上,我们希望通过按钮轻松切换这两个片段。移动版面大致如下:
<RelativeLayout>
<fragment id="container" name="fragA"/>
<ImageButton onClick="swapFragments" />
</RelativeLayout>
在活动的
swapFragments(View)
方法中,我尝试使用FragmentManager
将fragA
替换为fragB
:FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container, new FragB());
fragmentTransaction.commit();
...但我总是可以透过fragB
的透明部分看到fragA
,这让我相信它只是将fragB
放在fragA
的上面,而不是替换它。
我开始使用事务中的hide(Fragment)
和类似方法,但那看起来不是正确的做法。
有没有关于如何正确交换这些片段的提示?
编辑:我看到了这个问题的答案。然而,这让我感到困惑,因为我需要能够指定平板电脑和手机的不同布局。如果我必须以编程方式添加片段,如何避免在活动中写入特定于每个布局的代码(即
if(TABLET) {
addFragmentA();
addFragmentB();
} else {
addFragmentA();
}