Странное поведение с вложенными фрагментами и заменой - PullRequest
0 голосов
/ 25 февраля 2019

Допустим, у меня есть действие, которое содержит FragmentA.FragmentA имеет дочерний фрагмент FragmentB.Пользователь запускает некоторое действие в FragmentA, которое заменяет FragmentB на FragmentC.Хотя фрагмент C создается и его вид кажется раздутым, его вид не виден.

Существует также 2 интересных поведения, происходящих с этой структурой вложенного фрагмента: - Если действие (и все его дочерние фрагменты)), пользовательский интерфейс FragmentC будет виден - если FragmentB никогда не добавляется к FragmentA, а я присоединяю FragmentC к FragmentA, то пользовательский интерфейс FragmentC будет видимым

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

fun <T: Fragment> FragmentManager.overlayFragment(layoutId: Int,
                                                  fragmentClazz: Class<T>,
                                                  arguments: Bundle? = null) {
    val fragment = this.findFragmentById(layoutId)?.let {
        if (fragmentClazz.isInstance(it)) {
            it
        } else {
            fragmentClazz.newInstance()
        }
    } ?: fragmentClazz.newInstance()

    fragment.arguments = arguments

    this.beginTransaction()
        .replace(layoutId, fragment)
        .commit()
}

Так что в FragmentA у меня был бы некоторый код, который выглядит следующим образом:

childFragmentManager.overlayFragment(R.id.parent_layout, FragmentC::java.class)

чтобы прикрепить к нему дочерний фрагмент.

Может ли кто-нибудь пролить свет на то, что вызывает такое поведение и как его устранить?

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