说我有几个片段显示和做某些事情。现在,根据某些事件,我想更改片段的屏幕(或内容)。 [编辑]
例如。
我的第一个布局布局A有一个列表视图。而另一种布局,布局B有一个表格视图。我目前正在片段中显示布局A.在列表项单击时,我想在同一片段中显示布局B.
这是怎么做到的?
感谢。
答案 0 :(得分: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();
希望这有帮助。
答案 1 :(得分:1)
我的第一个布局布局A有一个列表视图。和另一种布局,布局 B有桌子视图。我目前正在显示布局A. 分段。在列表项单击,我想在同一显示布局B. 片段。
这是怎么做到的?
您可以使用新的嵌套片段API(可通过兼容包和普通片段API 16+获得)。而不是包含Fragment
的当前ListView
(并且您将用表替换),您将拥有一个包装器Fragment
,其视图为一个FrameLayout
{ {1}}的内容。
然后,您将创建两个包含ListView
并包含表格布局的片段。最初,您将基于列表的片段添加到包装器片段以获取开始布局,在项目单击事件上,您将使用getChildFragmentManager()
将基于列表的片段替换为基于表的片段(所有在包装器中)片段)。