2

我有后台堆栈的侦听器:

    getFragmentManager().
    addOnBackStackChangedListener(new OnBackStackChangedListener() {

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

    });

还有两个按钮。第一个按钮的 onClick 事件:

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

事件 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 回答