我有三个片段,如下图所示。我已经使用.xml文件在LinearLayout中添加了所有这三个片段,并且当启动器活动启动时,我使用setContentView加载该.xml布局。
我在fragment2上有一些控件。点击任何一个使用FragmentTransaction和commit方法以编程方式加载 片段4。这个片段被添加到屏幕上,但问题在于,在片段中添加片段4会占据整个屏幕区域。可能是什么问题?
注意:在任何项目上单击f2我想用新的片段f4替换f2。请记住,我已经通过xml布局文件添加了f1,f2,f3并以编程方式添加了新的片段f4。
以编程方式替换片段
回答
你应该总是以编程方式添加,删除和替换你的片段。因此,我建议你用诸如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();
现在,假设你已经这样做了F-1,F-2和F-3。然后你用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();
}
你有什么参考资料,我可以从那里举个例子吗? – MobiDev 2012-04-12 12:25:25
我编辑了我的答案。这应该解决你的问题。 – CodePrimate 2012-04-12 13:31:14
谢谢。好的我明白的是不要将碎片直接放入xml布局中。将framelayouts代替片段元素。同时用f2替换f4使用f2的帧。我对吗?你可以给参考网站检查出来。 – MobiDev 2012-04-12 13:51:50
仅保留FrameLayout作为XML中片段的占位符。在OnCreate中加载框架布局中的片段。 OnClick的片段,给这个特定的FrameLayout的ID来代替Fragment4。
- 1. 以编程方式切换片段
- 2. 以编程方式编排android片段
- 3. 以编程方式替换View Controller?
- 4. 以编程方式替换PowerMock的@PrepareForTest?
- 5. 用UIToolbar以编程方式替换UITabBar
- 6. 以编程方式搜索+替换.doc
- 7. 以编程方式在片段之间切换
- 8. 替换片段
- 9. 以编程方式替换段落中的格式化文本(链接,内容)
- 10. 无法以编程方式实现片段后编辑文本
- 11. 以编程方式将视图添加到片段onCreateView方法
- 12. 如何以编程方式在代码片段中包含yasnippet片段
- 13. 以最快的方式以编程方式替换Word文档中的文本
- 14. 如何切换标签编程方式从子片段
- 15. Android:以编程方式在片段中添加多个RecyclerViews
- 16. Java Eclipse:以编程方式导入插件和片段
- 17. 以编程方式启动/停止片段
- 18. 以xml或编程方式添加片段?
- 19. 以编程方式更新片段的布局
- 20. 如何以编程方式添加地图片段
- 21. 返回片段后以编程方式添加ImageView
- 22. 如何以编程方式创建多个片段?
- 23. Android:如何以编程方式为片段设置页边距?
- 24. 以编程方式将片段添加到视图组
- 25. 以编程方式将按钮添加到片段
- 26. 以编程方式合并由DotNetZip制作的zip片段
- 27. 以编程方式在片段内用ImageButton膨胀布局
- 28. 在LinearLayout中以编程方式放置片段
- 29. 无法以编程方式将片段添加到活动
- 30. 以编程方式将按钮添加到片段
它不清楚。你在最后把所有的四个片段放在一起吗? – 2012-04-12 11:45:05