Mob*_*Dev 19 android replace fragment
我有三个片段,如下图所示.我使用.xml文件在LinearLayout中添加了所有这三个片段,当我的启动器活动开始时,我使用setContentView加载.xml布局.
我对fragment2有一些控制.单击任何一个使用FragmentTransaction和commit方法以编程方式加载fragment4.这个片段被添加到屏幕上,但问题是以编程方式添加的片段4占据整个屏幕区域.可能是什么问题?
注意:在任何项目上单击f2我只想用新的片段f4替换f2.请记住,我已经通过xml布局文件添加了f1,f2,f3并以编程方式添加了新的片段f4.
Cod*_*ate 34
您应该始终以编程方式添加,删除和替换您的片段.因此,我建议您使用FrameLayout等容器替换F-1,F-2和F-3碎片.
基本上不是将<fragment/>元素作为F-1而是将其作为<FrameLayout/>元素.然后在FragmentActivity的onCreate中执行片段事务:
Fragment1 f1 = new Fragment1();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.f1_container, f1); // f1_container is your FrameLayout container
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
Run Code Online (Sandbox Code Playgroud)
现在,假设你已经为F-1,F-2和F-3做了这个.然后你再次在f4中用f4替换f2 OnClickListener:
public void onClick(View v) {
Fragment4 f4 = new Fragment4();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.f2_container, f4); // f2_container is your FrameLayout container
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
}
Run Code Online (Sandbox Code Playgroud)