Как заставить фрагмент удалить себя, т.е. его эквивалент finish()?

Я преобразовываю приложение для использования фрагментов с помощью библиотеки совместимости. Сейчас у меня есть несколько активностей (A B C D), которые цепляются друг за друга, у D есть кнопка "OK", которая при нажатии вызывает завершение, которое затем всплывает через onActivityResult(), чтобы дополнительно уничтожить C и B.

Для моей версии фрагментов до Honycomb каждая активность является эффективной оберткой для фрагментов Af Bf Cf Df. Все активности запускаются через startActivityForResult(), а onActivityResult() внутри каждого из фрагментов может с радостью вызвать getActivity(). finish()

Проблема, с которой я сталкиваюсь, заключается в том, что в моей версии Honeycomb у меня только одна активность, A, а фрагменты Bf, Cf, Df загружаются с помощью FragmentManager.

Я не понимаю, что нужно сделать в Df при нажатии 'OK', чтобы удалить фрагменты Df, Cf и Bf?

Я пытался сделать так, чтобы фрагмент сам выпрыгивал из стека, но это привело к исключению. onActivityResult() бесполезен, потому что я не загрузил фрагмент с помощью startActivityForResult().

Я думаю об этом совершенно неправильно? Должен ли я реализовать какой-то слушатель, который взаимодействует с родительским фрагментом или активностью, чтобы выполнить pop с помощью менеджера транзакций?

225
задан xarlymg89 20 November 2018 в 07:08
поделиться