删除片段后的getbackstackentrycount

时间:2015-01-10 11:04:16

标签: android android-fragments

当我从backstack中删除特定片段时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();

我非常傻笑但没有解决。

2 个答案:

答案 0 :(得分:0)

你的方法不对。你应该在你的活动中做这样的事情。

@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();
        }
    }

答案 1 :(得分:0)

我相信您可能想要做的是以下内容:

活动

@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();