Widziałem ten post ale rozwiązania zamieszczone tutaj nie pracują dla mnie: get the latest fragment in backstackUzyskaj ostatni fragment w tylnej stosu
Kiedy zastąpić fragment dla innej używam:
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
ft.replace(android.R.id.tabcontent, fragment, tag);
ft.addToBackStack(null);
ft.commit();
Więc, proszę zauważyć, że używam znaczników do wykrywania dowolnego fragmentu.
Mój problem jest w szczególności następujące elementy:
Załóżmy, że mam fragment_A, fragment_B i fragment_C. Mogę dostać się do fragmentu C z fragmentu A lub fragmentu B iw zależności od rodzica wezwania muszę zrobić coś konkretnego. Więc znowu potrzebuję odzyskać ostatnią FRAGMENT w tylnym stosie.
Kiedy próbuję zrobić:
FragmentManager fm = getSupportFragmentManager();
for(int entry = 0; entry < fm.getBackStackEntryCount(); entry++){
String ide = fm.getBackStackEntryAt(entry).getName();
Log.i("TAG", "Found fragment: " + ide);
}
otrzymuję wartości null. Jeśli używam getId() zamiast, mam numery więc próbowałem robić:
int id = fm.getBackStackEntryAt(entry).getId();
Fragment fragment = fm.findFragmentById(id);
Log.i("TAG", "Found fragment: " + fragment.getTag());
Ale otrzymuję null .. nie wiem co robić, więc każda pomoc będzie mile widziane.
Edit: Ja nazywam to metody w onBackPressed() {...}
masz rację, że to właśnie ja brakujący. Dzięki! – kiduxa
Zła praktyka używania tego samego znacznika dla fragmentu, który powinien zostać dodany lub zastąpiony. a backstack, który faktycznie powinien być nazwą poprzedniego fragmentu, aby zapamiętać transakcję, jest powiązany z tym fragmentem. –