0

我在我的 baseActivity 中有一个框架布局 (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.

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

4

2 回答 2

1

尝试使用动态片段(不是从 xml 布局文件中添加的),然后使用 FragmentTransaction api。

于 2012-11-22T15:08:04.040 回答
1

从代码动态地将片段添加到 B 布局。

当您需要将其放入 A 时,您将不得不删除片段并再次添加它,如下所示:

SearchFragment s = ...;
FragmentTransaction t = getSupportFragmentManager().beginTransaction();
t.remove(s);
t.add(R.layout.A_ID, s);
t.commit();
于 2012-11-22T15:09:45.907 回答