Удалить фрагмент из backstack и показать активность - PullRequest
0 голосов
/ 11 июня 2018

У меня есть одно действие и три фрагмента, это жизненный цикл:

  1. Открыть приложение (загрузка нагрузок)
  2. Нажать кнопку (Загрузка фрагмента A)
  3. Нажмите другую кнопку (фрагмент нагрузки B)

Активность -> Фрагмент A -> Фрагмент B

То, что я хочу, эточто если я нажму кнопку «Назад» в фрагмент B , он покажет мне Activity

Как мне это сделать?

Прямо сейчас, если я нажму кнопку "Назад", появится Фрагмент A

Редактировать: Так я называю Фрагмент B

 public void changeFragment(Fragment fragment, boolean addToBackStack) {

    if (fragment != null) {
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.addToBackStack(null);
        ft.replace(R.id.content_frame, fragment);
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
        ft.commit();
    }

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Через некоторое время мое решение поигралось с onBackPressed в упражнении:

@Override
public void onBackPressed() {

    FragmentManager fm = this.getSupportFragmentManager();
    if (getSupportFragmentManager().getBackStackEntryCount() > 0 ){
        for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
            fm.popBackStack();
        }
    } else {
        super.onBackPressed();
    }


}
0 голосов
/ 11 июня 2018

Вы добавляете фрагмент B поверх фрагмента A, используя add() в FragmentTransaction.Если вместо этого вы используете replace(), фрагмент A будет заменен фрагментом B, а не добавлен в бэкстек, так что при повторном нажатии на ваш фрагмент B вместо фрагмента A. будет отображаться действие. Отметьте это для более подробной информации о том, как заменить фрагмент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...