как удалить фрагмент после перехода к следующему фрагменту - PullRequest
0 голосов
/ 22 мая 2018

я использую фрагмент следующим образом:

 img_home.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            ft = fragmentManager.beginTransaction();
            ft.replace(R.id.freamlayout,fragment_home);
            ft.remove(fragment_setting);
            ft.commit();
        }
    });

    img_setting.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            ft = fragmentManager.beginTransaction();
            ft.remove(fragment_home);
            ft.replace(R.id.freamlayout,fragment_setting);
            ft.addToBackStack(null);
            ft.commit();
        }
    });

но при переходе к фрагменту 2 остается фрагмент 1, как это исправить ??

img1:

img1

img2:

img2

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Как я могу видеть в документации для fragmentTransaction.replace()

Заменить существующий фрагмент, который был добавлен в контейнер.По сути, это то же самое, что вызов метода remove (Fragment) для всех добавленных в данный момент фрагментов, которые были добавлены с тем же containerViewId, а затем для добавления (int, Fragment, String) с теми же аргументами, что и здесь.

Проверка

  • Убедитесь, что вы используете фрагменты v4, потому что приложение фрагменты ограничено в Android P.

Самый простой подход

Если у вас ничего не работает, поместите фон на родительский узел обоих макетов фрагмента.поэтому старый фрагмент не появляется за этим.

0 голосов
/ 22 мая 2018

Вам нужно только вызвать метод replace (), который выполняет оба действия:

Удаляет добавленные фрагменты и добавляет новый, передаваемый вами, в качестве второго аргумента.

См .: FragmentTransaction заменяет

...