我在组活动中有一个片段,我想用另一个片段替换它:
FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();
SectionDescriptionFragment bdf = new SectionDescriptionFragment();
ft.replace(R.id.book_description_fragment, bdf);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
Run Code Online (Sandbox Code Playgroud)
它在没有使用活动组的情况下作为单独的项目完成时工作正常,因为控件进入getview()内部,每个东西都可以在log cat中正常工作,但是没有视图可见,甚至没有出现任何异常,我希望书籍详细信息片段为由部分细节片段替换.
书籍详细信息片段的Xml具有id book_description_fragment,而用于部分描述片段的xml具有id section_description_fragment.
上面的代码在项目的onClick方法中,我希望当用户点击水平滚动视图中的项目时,片段会发生变化.
我有两个活动A和B.活动A有一个mapFragment,我将它添加到backstack.当我从B回到Actvity A时,我希望片段显示的状态与我离开时相同.但getFragmentManager().getBackStackEntryCount()返回0.这是我的代码:
MapFragment mMapFragment = MapFragment.newInstance();
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
mMapFragment.getMapAsync(this);
fragmentTransaction.replace(R.id.container, mMapFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
getFragmentManager().executePendingTransactions();
Run Code Online (Sandbox Code Playgroud)
从活动B返回时,我知道getBackStackEntryCount()的数量:
System.out.println("Number of entries in backstack "+ getFragmentManager().getBackStackEntryCount());
Run Code Online (Sandbox Code Playgroud)
这显示我0.
提前致谢.
我有三个片段,如下图所示.我使用.xml文件在LinearLayout中添加了所有这三个片段,当我的启动器活动开始时,我使用setContentView加载.xml布局.
我对fragment2有一些控制.单击任何一个使用FragmentTransaction和commit方法以编程方式加载fragment4.这个片段被添加到屏幕上,但问题是以编程方式添加的片段4占据整个屏幕区域.可能是什么问题?
注意:在任何项目上单击f2我只想用新的片段f4替换f2.请记住,我已经通过xml布局文件添加了f1,f2,f3并以编程方式添加了新的片段f4.