Условная навигация в компоненте навигации Android - PullRequest
0 голосов
/ 27 марта 2019

У меня есть 3 фрагмента A, B и C, где A является пунктом назначения моего навигационного графа.Когда пользователь запускает приложение, я проверяю фрагмент A, есть ли ранее сохраненные результаты.Если есть, я хочу перейти прямо к фрагменту C. Мне удалось заставить это работать.Тем не менее, когда пользователь нажимает обратно во фрагмент C в этом случае, я хочу, чтобы они были перенесены во фрагмент B вместо A, и это то, что мне нужно, чтобы разобраться.

enter image description here

Примечание: Фрагмент A - это просто фрагмент настройки, который посещается только один раз при запуске приложения.Это означает, что когда пользователь отжимается от фрагмента B, они переносятся на домашний экран ОС.

1 Ответ

0 голосов
/ 27 марта 2019

Вы можете переопределить onBackPress() и заменить любой фрагмент, на котором находитесь, на FragmentB, например,

  @Override
public void onBackPressed() {
    int stackCount = getFragmentManager().getBackStackEntryCount();
    if (stackCount == 1) {
        super.onBackPressed(); // if you don't have any fragments in your backstack yet.
    } else {
    // just replace container with fragment as you normally do;

    FragmentManager fm = getFragmentManager();
    fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);//clear backstackfirst and then you can exit the app onbackpressed from home fr
    FragmentTransaction transaction = fm.beginTransaction();
    transaction.replace(R.id.container, new FragmentB());
    transaction.commit();
    }
}

Это оригинальный ответ, вы можете посмотреть ответ Rainmaker

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