我在这个问题上花了很多时间,我不知道哪里有问题。
我对A片段有反应。
A有第二片段B,B有C片段。
活动:使用R.id.container布局-> (放置下一个片段的位置)
A:用R.id.place_promo布局->
B:用R.id.container_promo布局->
C:布局有线性布局R.id.promo_container
我得到了一个错误:
Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f060109 (pl.xx.xx.xx:id/container_promo) for fragment FragmentxxxxOne{4252e858 #3 id=0x7f060109}我用同样的方式放进了所有片段:
getActivity()
.getSupportFragmentManager()
.beginTransaction()
.replace(container, fragment)
.commit();有什么建议吗?
我不知道这个错误何时出现,因为它来自我的错误处理程序。
发布于 2015-03-13 11:05:52
公共抽象FragmentTransaction替换(int containerViewId,片段片段) 调用用空标记替换(int、片段、字符串)。
从这里..。
公共抽象FragmentTransaction替换(int containerViewId、片段片段、字符串标记) 替换添加到容器中的现有片段。这在本质上等同于对使用相同containerViewId添加的所有当前添加的片段调用remove(片段),然后用这里给出的相同参数添加(int、片段、字符串)。 参数
因此,您要在容器中替换给定的片段实例。
您还会说每个片段都是这样管理的。
您的应用程序如何工作的想法是:
问题是,当您一直在替换片段时,您总是希望已经放置了一个片段。在第一次运行时,根本没有片段,替换方法无法找到(第3点)给定的片段。
首先,您应该期待另一种添加片段的方法,只有当您需要时,您才应该替换它们,预先检查它们的存在(提示:使用FragmentManager的发现 )
更新
可能漏掉了一件可能会把事情搞砸的话。我不认为使用activity.getSupportFragmentManager()是嵌套片段的正确方法。这是向活动tho添加第一个片段的正确方法。一旦需要在第一个片段中嵌套第二个片段,就需要调用第一个片段的FragmentManager
否则,您将只将片段附加到活动
发布于 2015-03-13 12:06:25
这将运行良好,在onCreateView()方法中使用此方法
View rootView;
if (rootView != null) {
ViewGroup parent = (ViewGroup) rootView.getParent();
if (parent != null)
parent.removeView(rootView);
}
try {
rootView = inflater.inflate(R.layout.myride, container, false);
} catch (InflateException e) {
}https://stackoverflow.com/questions/29030264
复制相似问题