2

バックスタックのリスナーがあります:

    getFragmentManager().
    addOnBackStackChangedListener(new OnBackStackChangedListener() {

        @Override
        public void onBackStackChanged() {
            Log.d("MainActivity", "Change fragment");
        }

    });

そして2つボタン。最初のボタンのイベント onClick:

            getFragmentManager().
            beginTransaction().
            add(R.id.root, fragm).
            commit();

2 番目のボタンのイベント onClick:

            getFragmentManager().
            beginTransaction().
            remove(fragm).commit();

しかし、リスナーは機能しません。関数 onBackStackChanged は呼び出されません。

4

1 に答える 1

7

推測では、最初のトランザクションがへの呼び出しを介してバックスタックに追加されていないためaddToBackStack(...)です。だから試してみてください:

        getFragmentManager().
        beginTransaction().
        add(R.id.root, fragm).
        addToBackStack(null).
        commit();
于 2012-10-30T15:27:35.577 に答える