Как удалить первый фрагмент, добавленный в FragmentManager, и запустить новый BackStack? - PullRequest
0 голосов
/ 09 июня 2018

Поэтому я решил использовать backstack Fragment в своем домашнем проекте «Single Activity, Multiple Fragments», и у меня возникают проблемы с самого начала.

Мой поток приложений выглядит так -> Activity запускается,затем делает это:

supportFragmentManager.beginTransaction()
        .add(R.id.container, OnboardingFragment.newInstance())
        .commit()

Этот первый фрагмент OnboardingFragment, затем пользователь переходит к SignInFragment, где у меня есть этот метод в моей деятельности:

fun replaceFragment(fragment: Fragment) {
    supportFragmentManager.beginTransaction()
        .replace(R.id.container, fragment)
        .addToBackStack(null)
        .commit()
}

Я использую этот метод дляstart SignInFragment(), и я продолжаю использовать этот метод для навигации по приложению впоследствии.

Однако, что я хотел бы сделать, это после того, как пользователь войдет в систему, я хотел бы полностью удалить всеэлементы обратного стека и фрагменты, и начните с чистого листа.

Проблема в том, что если делать popBackStack до backStackEntryCount == 0, OnboardingFragment никогда не выталкивается из стека, потому что он не был добавленк этому в первую очередь.Добавление его в backstack в начале привело к ошибке, когда backstack очищается, но у вас будет пустое представление, если вы нажмете Back или Up.

Я попытался сделать remove(OnboardingFragment()), но это не сработалолибо выполнение 1010 * поверх него также не работает, потому что его пользовательский интерфейс остается под новым пользовательским интерфейсом.даже скрыть () не сработало.Почему это так или иначе происходит?

TLDR;как удалить первый фрагмент, добавленный в контейнер, если он не находится в заднем стеке?

...