Допустим, у меня есть действие, которое содержит 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)
чтобы прикрепить к нему дочерний фрагмент.
Может ли кто-нибудь пролить свет на то, что вызывает такое поведение и как его устранить?