替换了“新”片段后面可见的片段

时间:2016-03-08 10:24:14

标签: android android-fragments fragmenttransaction fragmentmanager

我使用包含frameLayout的mainActivity。 在这个framelayout中我加载不同的片段(通过点击导航抽屉中的menuitem)当我在片段之间切换静态布局(.xml布局文件)时一切正常。 1个片段具有动态创建的布局(在onCreateView方法中创建)。当我导航到这个片段并导航回另一个片段时,我仍然可以通过“新”片段看到带有动态创建控件的“旧”片段。

我用来在片段之间切换的代码是:

mFragmentManager = getSupportFragmentManager();
mFragmentTransaction = mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.fr_content_container,new AlertOverviewFragment()).commit();



mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(MenuItem menuItem) {
        mDrawerLayout.closeDrawers();

        if (menuItem.getItemId() == R.id.nav_item_alerts) {
            FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.fr_content_container, new AlertOverviewFragment()).commit();
        }

        if (menuItem.getItemId() == R.id.nav_item_news) {
            FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.fr_content_container, new NewsFragment()).commit();
        }

        if (menuItem.getItemId() == R.id.nav_item_add_country) {
            FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.fr_content_container, new AddCountryFragment()).commit();

        }
        return false;
    }

});

我可以为新活动的背景提供背景颜色,以便旧片段不再可见,但我认为这不是最佳实践解决方案。然后旧片段仍然存在。 解决此问题的最佳方法是什么?

当我对这个碎片有这个问题时,还有其他片段在导航到另一个片段后仍然存在于后台吗? 什么时候,我需要在切换到新片段之前“破坏”这些吗?

我读了一些关于实况循环的内容并理解了这一点,但我认为Android由他自己管理这些状态?

0 个答案:

没有答案