我在代码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并没有显示出来,显示内容是一片空白,这就奇怪了,我以为是show和add的事务操作必须分开两个事务来做,于是我又添加了一行
supportFragmentManager.beginTransaction()
.show(meFragment1)
.commit()
结果还是不行,我又再次尝试,以为是onCreate的时机不行,于是我便使用了View.post(Runable)方法。结果还是没能成功显示。
在我不断的排查之下,终于破案了,原来FragmentTransaction对add的fragment是根据你最后一个去显示的,而我第二个fragment的数据是空白,就导致我以为是没有显示出来。
但是为什么我单独调用了show还是没能打破这个规则,根据我的代码去执行显示呢。这个就要留给后续的研究了。或者有知道的小伙伴留言告知我一下,万分感谢。
今天先写这么多初步记录一下,还要忙着coding。。。