Замененный фрагмент виден за "новым" фрагментом

Я использую 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 сам управляет этими состояниями?

0 ответов

Другие вопросы по тегам