我使用包含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由他自己管理这些状态?