如何重新定义片段

时间:2012-11-22 15:02:14

标签: android android-layout

我在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.

我发现这很奇怪,因为我正在删除视图,正如您在代码段中看到的那样。有任何想法吗?谢谢:))

2 个答案:

答案 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();