Замененный фрагмент виден за "новым" фрагментом
Я использую mainActivity, которая содержит frameLayout. В этой структуре кадра я загружаю различные фрагменты (щелкая по элементу меню в блоке навигации). Когда я переключаюсь между фрагментами со статическим макетом (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 сам управляет этими состояниями?