Я использую встроенный ящик для навигации для запуска своего приложения. Я не могу понять, как обращаться с кнопкой "Назад" . Когда он нажат, я хочу, чтобы он снова загрузил самый первый фрагмент. Fragment1.
Итак, когда приложение запускается, вы видите, что Fragment1 запущен. Затем они могут щелкнуть по фрагменту 2-5, чтобы перейти на другие страницы. На всех этих страницах я хочу, чтобы кнопка "Назад" вернула пользователя в Fragment1. Единственным местом, где пользователь может выйти из приложения через кнопку "Назад" , является Fragment1.
SInce все обрабатывается функцией FragmentActivity, с которой я пытался возиться с подставкой. Тем не менее, я продолжаю получать силовую ошибку:
(01-11 14:09:33.114: E/AndroidRuntime(8292): android.view.InflateException: Binary XML file line #7: Error inflating class fragment)
Это то, что у меня есть до сих пор:
Я обязательно добавил фрагменты в задний стек следующим образом:
fm.beginTransaction().replace(R.id.main, newFragment).addToBackStack("fragBack").commit();
Кнопка "Назад" :
@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();
}
}
Кто-нибудь знает, что мне нужно делать? Нужно ли мнезывать onBackPressed в каждом фрагменте (если это возможно), а не в FragmentActivity, который управляет ящиком? В моих предыдущих приложениях я был в порядке с кнопкой "Назад" , закрывающей приложение, независимо от того, какой фрагмент пользователь включен, но тот, который я сейчас делаю, хочу, чтобы кнопка возврата вернулась к фрагменту.
Поблагодарили бы за помощь, спасибо.
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);
}