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レイアウトファイルから追加されていない)を使用してから、FragmentTransactionAPIを使用してください。

于 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 に答える