Android中<fragment>标签作为动态Fragment容器不生效问题咨询
问题1:代码加载Fragment到标签不生效的原因
android:name属性,自动实例化对应的Fragment并绑定到该标签位置,整个过程不可通过FragmentTransaction修改。
你当前的android:name属性,首先在setContentView的布局解析阶段就会抛出InflateException,根本走不到后续的Fragment事务执行逻辑;其次就算补全了android:name属性,你通过add/replace操作往
问题2:替换为FrameLayout、FragmentContainerView可以正常运行的原因
FrameLayout和FragmentContainerView都属于通用视图容器,本身不绑定任何Fragment实例,仅作为空占位符存在。而FragmentTransaction的add/replace等API的设计目标,就是将Fragment的视图挂载到这类空容器上,完全符合动态Fragment的使用逻辑,所以可以正常运行。
补充说明:FragmentContainerView是官方专门为Fragment动态加载设计的容器,相比FrameLayout额外优化了Fragment的动画过渡、生命周期同步等逻辑,是动态加载Fragment的首选容器。
问题3:能否用标签作为动态加载容器,在onCreate中代码加载Fragment
内容的提问来源于stack exchange,提问作者Tu Le Anh

