0

フラグメントに問題があります。このコードを使用して、フラグメント間を移動します。

「メイン」フラグメント間(バックスタックなし、ユーザーが押したときに終了するようにするため(機能します)):

    FragmentManager fragmentManager = getFragmentManager();
    final FragmentTransaction ft = fragmentManager.beginTransaction();

    ft.setCustomAnimations(R.anim.slide_in_up_honeycomb, R.anim.slide_out_up_honeycomb);
    ft.replace(R.id.container, NewsFragment.newInstance(position + 1), NewsFragment.class.getSimpleName());
    ft.commit();

「内側」のフラグメント間 (バックスタックあり):

            FragmentTransaction ft = ((Activity) getActivity()).getFragmentManager().beginTransaction();
            Fragment nextFragment = LexikonDetailFragment
                    .newInstance(item);

            ft.setCustomAnimations(R.anim.slide_in_up_honeycomb, R.anim.slide_out_up_honeycomb);
            ft.replace(R.id.container, nextFragment);
            ft.addToBackStack(LexikonDetailFragment.class.getSimpleName());
            ft.commit();

ただし、次の場合:

フラグメント A -> フラグメント A1

フラグメント A1 -> フラグメント B

戻るボタンを押す (アプリを終了する必要があります) -> フラグメント A1 に戻ります

これ起こります:

画像

A1 フラグメントはバックスタックから削除されず、バックグラウンドにとどまっているようです。考えられる解決策の1つは、すべてのフラグメントに白い背景を設定することだと思いました..しかし、これは問題を解決せず、単に非表示にするだけです. では、可能な解決策は何でしょうか?

4

1 に答える 1

0

さて、私は解決策を見つけました:

次のコマンドを使用して、内側のフラグメントを手動で削除する必要がありました。

fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

「外側」のフラグメントが変更されるたびに、このコマンドを呼び出します。内側のものは取り除かれ、タダ...それは魅力のように機能します:)

于 2016-01-17T14:59:44.497 に答える