onDetach() we Fragmencie nie jest wywoływany

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?

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1