我在baseActivity中有一个framelayout(A)作为基本视图,然后我添加了一个额外的视图(B),其中可能包含一个SearchFragment。我想从此布局B中删除SearchFragment并将其添加到外部布局A。
private void reparentSearchFragment(ViewGroup view, FrameLayout container){
View search = view.findViewById(R.id.search_fragment);
if(search != null && view instanceof ViewGroup){
view.removeView(search);
container.addView(search);
}
}
这似乎失败了,日志是Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
我发现这很奇怪,因为我正在删除视图,正如您在代码段中看到的那样。有任何想法吗?谢谢:))
答案 0 :(得分:1)
尝试使用动态片段(不是从xml布局文件中添加),然后使用FragmentTransaction apis。
答案 1 :(得分:1)
从代码中动态地将片段添加到B布局。
当你需要把它放在A中时,你必须删除片段并再次添加它:
SearchFragment s = ...;
FragmentTransaction t = getSupportFragmentManager().beginTransaction();
t.remove(s);
t.add(R.layout.A_ID, s);
t.commit();