相关疑难解决方法(0)

用活动组内的另一个片段替换片段

我在组活动中有一个片段,我想用另一个片段替换它:

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方法中,我希望当用户点击水平滚动视图中的项目时,片段会发生变化.

java android android-fragments

131
推荐指数
4
解决办法
27万
查看次数

即使在添加addToBackStack和executePendingTransactions()之后,getBackStackEntryCount()也始终返回0

我有两个活动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.

提前致谢.

android fragmentmanager

20
推荐指数
2
解决办法
1万
查看次数

以编程方式替换片段

我有三个片段,如下图所示.我使用.xml文件在LinearLayout中添加了所有这三个片段,当我的启动器活动开始时,我使用setContentView加载.xml布局.

我对fragment2有一些控制.单击任何一个使用FragmentTransaction和commit方法以编程方式加载fragment4.这个片段被添加到屏幕上,但问题是以编程方式添加的片段4占据整个屏幕区域.可能是什么问题?

注意:在任何项目上单击f2我只想用新的片段f4替换f2.请记住,我已经通过xml布局文件添加了f1,f2,f3并以编程方式添加了新的片段f4.

在此输入图像描述

android replace fragment

19
推荐指数
1
解决办法
3万
查看次数