删除片段后的 getbackstackentrycount

getbackstackentrycount after remove fragment

当我从后台删除特定片段时,getbackstackentrycount() 没有刷新但片段成功删除! 我的测试代码在这里:

int count = fragmentManager.getBackStackEntryCount();
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.remove(fragcontent);
fragmentTransaction.commit();
//also I add here this code => fragmentManager.executePendingTransactions();
//but count not getBackStackEntryCount() return previous count!
int newCount = fragmentManager.getBackStackEntryCount();

我很纠结这个问题,但没有解决。

你的方法不对。你应该在你的 activity.

中做这样的事情
@Override
    public void onBackPressed()
    {
        final Fragment fragment = this.getSupportFragmentManager().findFragmentById(R.id.main_frame);
        if (fragment != null && fragment instanceof FragmentB)
        {
            // Replace it with FragmentA
        }
        else
        {
            super.onBackPressed();
        }
    }

我相信你可能想要做的是:

Activity :

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ...
    getSupportFragmentManager().addOnBackStackChangedListener(new OnBackStackChangedListener()
    {
        public void onBackStackChanged()
        {
            int backCount = getSupportFragmentManager().getBackStackEntryCount();
            if (backCount == 0)
            {
                finish();
            }
        }
    });

为了工作,你需要将片段添加到backstack:

        getSupportFragmentManager()
        .beginTransaction()
                .replace(R.id.fragment_container, fragment)
                .addToBackStack(null)
        .commit();