Как уничтожить фрагмент? - PullRequest
       14

Как уничтожить фрагмент?

47 голосов
/ 19 августа 2011

У меня есть один Activity. Activity имеет два Fragment с. Фрагмент А - Меню. Фрагмент B - это деталь.

Я пытаюсь сделать другой фрагмент C во фрагменте B, поэтому в Activity есть 3 фрагмента. И я пытаюсь заменить фрагмент B на фрагмент D.

Я думаю, фрагменты B и C мертвы. НО эти фрагменты живы. Просто фрагменты находятся в onDestroyView() состоянии. Я хочу onDestroy() или onDetach().

Что мне делать для Fragments.onDestroy() или onDetach()? Я не могу уничтожить или изменить Activity.

Ответы [ 4 ]

66 голосов
/ 06 апреля 2012

Если вы не удалите эти фрагменты вручную, они все равно будут прикреплены к операции. Ваша деятельность не уничтожена, поэтому эти фрагменты тоже. Чтобы удалить (уничтожить) эти фрагменты, вы можете позвонить:

fragmentTransaction.remove(yourfragment).commit()

Надеюсь, это поможет вам

10 голосов
/ 03 ноября 2012

Дайте попытку этому

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    // TODO Auto-generated method stub

    FragmentManager manager = ((Fragment) object).getFragmentManager();
    FragmentTransaction trans = manager.beginTransaction();
    trans.remove((Fragment) object);
    trans.commit();

    super.destroyItem(container, position, object);
}
5 голосов
/ 02 февраля 2017

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

getFragmentManager().beginTransaction().remove(yourFragment).commitAllowingStateLoss();

или, если вы используете supportLib, вам нужно позвонить:

getSupportFragmentManager().beginTransaction().remove(yourFragment).commitAllowingStateLoss();
0 голосов
/ 25 января 2018

Используется в Котлин

appCompatActivity?.getSupportFragmentManager()?.popBackStack()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...