как избежать пустого экрана активности, когда я вернусь из последнего фрагмента - PullRequest
1 голос
/ 05 февраля 2020

Здесь я использую

public void replaceFragment(Fragment fragment, boolean isMainPage, Bundle bundle) {
    String backStateName = fragment.getClass().getName();
    FragmentManager manager = getSupportFragmentManager();
    boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0);

    if (bundle != null) {
        fragment.setArguments(bundle);
    }

    System.out.println("isMainPage :: " + isMainPage);
    System.out.println("FRAGMENT NAME :: " + backStateName + " fragmentPopped :: " + fragmentPopped);

    if (!fragmentPopped) { //fragment not in back stack, create it.
        FragmentTransaction transaction = manager.beginTransaction();
        transaction.replace(R.id.main_fragment, fragment);

        if (isMainPage) {
            getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

        }
        int backStackCount = getSupportFragmentManager().getBackStackEntryCount();
        System.out.println("backStackCount :: " + backStackCount);
        transaction.addToBackStack(backStateName);
        transaction.commit();
    }
}

для замены фрагментов всего проекта. Моя проблема в том, что, когда я возвращаюсь к последнему фрагменту, он показывает пустую страницу, где размещен макет моего кадра для замены фрагментов

<FrameLayout
    android:id="@+id/main_fragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

1 Ответ

1 голос
/ 05 февраля 2020

Просто удалите эту строку из своего кода, это исправит вашу проблему.

transaction.addToBackStack(backStateName);

Объяснение

Вы добавили свой фрагмент в стек, чтобы на возвращаясь сначала, фрагмент извлекается из backstack и виден пустой контейнер.

Примечание: Если вы хотите дать имя тегу для своего фрагмента, просто замените эту строку кода transaction.replace(R.id.main_fragment, fragment); на эту transaction.replace(R.id.main_fragment, fragment, backStateName);

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