嵌套片段奇怪的行为并替换

时间:2019-02-25 19:23:47

标签: android android-fragments

因此,假设我有一个包含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)

在其上附加子片段。

任何人都可以阐明导致这种现象的原因以及如何解决该问题的方法吗?

0 个答案:

没有答案