Как удалить конкретный фрагмент из макета - PullRequest
0 голосов
/ 17 июня 2019

У меня 4 фрагмента в домашнем макете.Я хочу удалить конкретный фрагмент, когда пользователь нажимает соответствующую кнопку.когда я делаю это с popBackStack(), это удаляет недавний фрагмент, добавленный пользователем.так как я могу удалить определенный фрагмент с экрана.

Я добавляю фрагмент по нажатию кнопки, у меня есть еще 3 кнопки добавления.

addFragment_1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FragmentManager fm = getSupportFragmentManager();
            fm.beginTransaction()
                    .add(R.id.Fragment_container_1, new Fragment_1(), "Frag 1")
                    .addToBackStack("Frag 1")
                    .commit();
        }
    });

Затем я хочу удалить этот фрагмент с другиминажатие кнопки.также добавьте еще 3 кнопки удаления.

 removeFragment_1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getSupportFragmentManager().popBackStack();
        }
    });

У меня есть 4 кнопки добавления и 4 кнопки удаления.когда я добавляю все 4 фрагмента на экран и затем нажимаю 1-ую кнопку удаления, он удаляет 4-й фрагмент, затем 3> 2> 1 и все 4 кнопки удаления делают то же самое.Я хочу, чтобы 1 кнопка удаления удалила только один соответствующий фрагмент.

Я также пытаюсь popBackStack ("Frag 1", 0) удалить все 3 фрагмента, кроме фрагмента 1, а при попытке popBackStack("Frag 1", FragmentManager.POP_BACK_STACK_INCLUSIVE) удалить все 4 фрагмента.

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

1 Ответ

0 голосов
/ 17 июня 2019
Fragment fragment = getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT);
if(fragment != null)
getSupportFragmentManager().beginTransaction().remove(fragment).commit();

Это должно работать.

...