Перед тем как написать это, я столкнулся со многими вопросами stackoverflow. я так запутался в этом парне Backstack в фрагменте.Фрагмент Backstack, не появляющийся спереди на кнопке Back back prssed
Я добавил три фрагмента на тот же контейнер внутри Активность
Фрагмент 1:
private void addLandingFragment() {
landingPageFragment = LandingPageFragment.newInstance();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.container, landingPageFragment, LANDING_PAGE_FRAGMENT_TAG);
transaction.commit();
}
Фрагмент 2:
public void addIntrofragment() {
fragment2 = IntroFragment.newInstance();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.container, fragment2, INTRO_PAGE_FRAGMENT_TAG);
transaction.addToBackStack(fragment2.getClass().getName());
transaction.commit();
}
Фрагмент 3:
public void onGetStartedClicked() {
fragment3= ConnectFragment.newInstance();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.container, fragment3,CONNECT_PAGE_FRAGMENT_TAG);
transaction.commit();
}
Что теперь Я хочу, когда пользователь нажимает кнопку «назад» на фрагменте 3, он должен появиться на самом первом фрагменте, поэтому я переопределил метод onBackPressed().
@Override
public void onBackPressed() {
manager.popBackStack(fragment2.getClass().getName() ,FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
но ничего не происходит на экране, он сохраняет фрагмент 3.
UPDATE
Когда я навигации от
fragment1> FRAGMENT2
и нажимает кнопку на FRAGMENT2 назад, я прихожу к fragment1, но если перейти от
фрагмент1> фрагмент2 > fragment3
Я получаю счетчик стека 1 по методу onBackPressed()
, но на экране устройства он все еще показывает фрагмент3. Теперь снова нажмите кнопку возврата, чтобы выйти из приложения, но фрагмент1 не появится на экране. Настолько озадачительно, почему это происходит?
Любое решение для достижения этой цели.
Вы попробовали просто вызвать 'getFragmentManager(). PopBackStack()'? –
@tyczj popBackStack ничего не возвращает. – pyus13
@joaquin Я попробовал, но не повезло :( – pyus13