Проблемы при навигации по фрагментам - Popbackstack - PullRequest
0 голосов
/ 17 июня 2019

Я пытался исправить ошибку навигации в своем приложении, но я не могу ее решить, что бы я ни пытался.Я имею в виду, я могу решить это, но это выглядит дрянно и дешево.

У меня есть 5 основных фрагментов в нижней панели навигации: A, B, C, D, E.

Каждый элемент, переходит к другому фрагменту и т. д.

Если я перейду к A -> A.1 -> A.2 -> D и затем нажму кнопку «Назад» на моем устройстве, A.1 появится иззадний стек.Есть ли способ иметь отдельные задние стеки для каждого основного фрагмента?

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

public static void replaceFragment(@NonNull AppCompatActivity activity, @NonNull Fragment fragment, int resId, boolean addToBackStack) {
    String backStackName = SharedPreferencesManager.getInstance().getBackStackName(activity.getBaseContext());
    FragmentManager manager = activity.getSupportFragmentManager();
    boolean fragmentPopped = manager.popBackStackImmediate(backStackName,0);
    boolean fragmentExists = manager.findFragmentByTag(backStackName) != null;

    FragmentTransaction ft;
    if (!fragmentPopped && !fragmentExists) {
        ft = manager.beginTransaction();
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        ft.replace(resId, fragment, Constants.CURRENT_FRAGMENT_TAG);
        if (addToBackStack) {
            ft.addToBackStack(backStackName);
        }
        ft.commit();
    }
}

Заранее спасибо,Если есть другой фрагмент кода, который вам нужен, чтобы показать вам, пожалуйста, скажите

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