Android FragmentTransaction调用show不显示

73 阅读1分钟

我在代码onCreate中调用了这么一组Fragment事务操作,这两个fragment分别对应不同的列表,但是fragment2的列表是空白的。

val meFragment1 = MeFragment.newInstance(1)
val meFragment2 = MeFragment.newInstance(2)

supportFragmentManager.beginTransaction()
    .add(R.id.fragment_container, meFragment1)
    .add(R.id.fragment_container, meFragment2)
    .show(meFragment1)
    .commit()

但是我期望的meFragment1并没有显示出来,显示内容是一片空白,这就奇怪了,我以为是showadd的事务操作必须分开两个事务来做,于是我又添加了一行

supportFragmentManager.beginTransaction()
    .show(meFragment1)
    .commit()

结果还是不行,我又再次尝试,以为是onCreate的时机不行,于是我便使用了View.post(Runable)方法。结果还是没能成功显示。

在我不断的排查之下,终于破案了,原来FragmentTransaction对add的fragment是根据你最后一个去显示的,而我第二个fragment的数据是空白,就导致我以为是没有显示出来。

但是为什么我单独调用了show还是没能打破这个规则,根据我的代码去执行显示呢。这个就要留给后续的研究了。或者有知道的小伙伴留言告知我一下,万分感谢。

今天先写这么多初步记录一下,还要忙着coding。。。