-1

假设我有一些片段显示和做某些事情。现在,基于某些事件,我想更改片段的屏幕(或内容)。[编辑]

例如。

我的第一个布局,布局 A,有一个列表视图。另一个布局,布局 B 有一个表格视图。我目前正在片段中显示布局 A。单击列表项时,我想在同一片段中显示布局 B。

这是怎么做到的?

谢谢。

4

2 回答 2

1

如果我正确理解了您的问题,这就是我的处理方式。

我假设您已经为列表片段(片段 A)和视图片段(片段 B)创建了片段类。

我们可以使用 fragmentManager 来交换布局视图中的片段。

//grab fragmentManager, this will allow us to switch out fragments
FragmentManager fragManager = getFragmentManager();
FragmentTransaction fragTransaction = fragManager.beginTransaction();

//first remove the current fragment
fragTransaction.remove(fragManager.findFragmentById(R.id.layout_view));

//replace the current FragmentA with FragmentB
fragTransaction.replace(R.id.layout_view, new FragmentB());

//add to backstack if you want the android back button to work properly
fragTransaction.addToBackStack(null);

//and lastly, we commit the changes to the fragmentManger's transaction
fragTransaction.commit();

希望这会有所帮助。

于 2013-01-18T17:44:46.177 回答
1

我的第一个布局,布局 A,有一个列表视图。另一个布局,布局 B 有一个表格视图。我目前正在片段中显示布局 A。单击列表项时,我想在同一片段中显示布局 B。

这是怎么做到的?

您可以使用新的嵌套片段 API(可通过兼容性包和普通片段 API 16+ 获得)。Fragment而不是包含 a的 current ListView(并且您将用表格替换它),您将拥有一个 wrapper Fragment,它的视图FrameLayout为它的内容的单一视图。

然后,您将创建两个片段,一个包含ListView和 包含表格布局。最初,您将基于列表的片段添加到包装片段以获得开始布局,并且在项目单击事件中,您将使用getChildFragmentManager()基于表格的片段替换基于列表的片段(全部在包装片段中)。

于 2013-01-18T17:50:16.303 回答