onDetach() we Fragmencie nie jest wywoływany

onDetach() we Fragmencie nie jest wywoływany
KE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 94
0

Hej,

Mam ciekawą dla mnie zagwozdkę. Zauważyłem, że nawigując z jednego fragmentu do innego w pewnych wypadkach onDetach() nie jest wywoływane. Nie bardzo rozumiem dlaczego i jestem ciekawy co tak właściwie się dzieje.
Aplikacja korzysta z:

  • Navigation Component
  • Jednej Aktywności z custom appBarem do przechodzenia do innych fragmentów + navigationDrawer
  • Fragmentów, które są podmieniane w tej aktywności

I teraz tak:

  1. Jeśli jestem we Fragmencie B i cofnę się do Fragmentu A to we Fragmencie B onDetach() się wywoła.

  2. Jeśli jestem we Fragmencie B i przejdę poprzez private fun navigateToCart() { navController.navigate(R.id.cartFragment) } do Fragmentu C to onDetach() Fragmentu B się NIE wywoła.

  3. Jeśli jestem we Fragmencie A i przejdę poprzez kliknięcie na item w recyclerView do Fragmentu B to onDetach() Fragmentu A się NIE wywoła.

  4. Jeśli jestem we Fragmencie B i przejdę do Fragmentu C używając metody powyżej a potem przejdę do Fragmentu A używając menu z navigationDrawer to onDetach() to onDetach() Fragmentów A i B się wywoła.

Dlaczego? Ma to związek z back stackiem i jest on czyszczony przy przejściu np do Fragmentu A poprzez navigationDrawer? Czy Fragment jest odpinany od Aktywności(wypada z back stack) gdy cofamy się za pomocą przycisku Wstecz i dlatego onDetach() się wywołuje?

AA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

Jest tak jak piszesz, jest to kwestia "zrzucania" fragmentów z backstack

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.