Szuflada nawigacyjna, obsługa przycisku Wstecz, aby przejść do poprzednich fragmentów?
Używam wbudowanej szuflady nawigacyjnej do uruchamiania mojej aplikacji. Nie wiem, jak sobie poradzić z przyciskiem Wstecz. Po naciśnięciu chcę, aby ponownie załadował pierwszy fragment. Fragment1.
Tak więc po uruchomieniu aplikacji zobaczysz fragment Fragment1. Następnie mogą kliknąć Fragment 2-5, aby przejść do innych stron. Na wszystkich tych stronach chcę, aby przycisk Wstecz przeniósł użytkownika z powrotem do Fragmentu1. Jedynym miejscem, w którym użytkownik powinien móc wyjść z aplikacji za pomocą przycisku Wstecz, jest Fragment1.
Gdy wszystko jest obsługiwane przez FragmentActivity, próbowałem tam mieszać z przyciskiem backbutton. Ciągle otrzymuję błąd zamknięcia siły:
(01-11 14:09:33.114: E/AndroidRuntime(8292): android.view.InflateException: Binary XML file line #7: Error inflating class fragment)
Oto, co mam do tej pory:
Dopilnowałem, aby dodać fragmenty do stosu z tyłu w ten sposób:
fm.beginTransaction().replace(R.id.main, newFragment).addToBackStack("fragBack").commit();
Przycisk powrotu:
@Override
public void onBackPressed() {
if (getSupportFragmentManager().findFragmentByTag("fragBack") != null) {
}
else {
super.onBackPressed();
return;
}
if (getSupportFragmentManager().getBackStackEntryCount() != 0) {
Toast.makeText(getApplicationContext(), "Test", Toast.LENGTH_LONG).show();
Fragment frag = getSupportFragmentManager().findFragmentByTag("fragBack");
FragmentTransaction transac = getSupportFragmentManager().beginTransaction().remove(frag);
transac.commit();
}
}
Czy ktoś wie, co muszę zrobić? Czy muszę wywoływać onBackPressed w każdym fragmencie (jeśli jest to możliwe), a nie w FragmentActivity sterującym szufladą? W moich poprzednich aplikacjach byłem w porządku, naciskając przycisk Wstecz zamykający aplikację, niezależnie od tego, który fragment jest włączony, ale ten, który teraz robię, chcę, aby przycisk Wstecz wrócił do Fragmentu1.
Dziękuję bardzo za pomoc.
onItemClick
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Fragment newFragment = new MapsPage();
FragmentManager fm = getSupportFragmentManager();
switch(i) {
case 0:
newFragment = new Fragment2();
break;
case 1:
newFragment = new Fragment3();
break;
case 2:
newFragment = new Fragment4();
break;
case 3:
newFragment = new Fragment5();
break;
}
fm.beginTransaction().add(R.id.main, newFragment).addToBackStack("fragback").commit();
drawerLayout.closeDrawer(rl);
}