如何用Android数据绑定替换androidx.fragment.app.FragmentContainerView中



我当前的Android应用程序使用数据绑定。

我在尝试向androidx.fragment.app.FragmentContainerView添加片段时遇到问题。

我已经设法达到了我想要的效果,但我觉得这不是正确的方法。

我不明白我在哪里犯了错误。

在我的活动onCreate方法中,我执行此代码以设置所需的片段

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
if (savedInstanceState == null) manageFragment()
}

其中manageFragment()函数类似于该

private fun manageFragment() {
val myFragment = MyFragment.instance()
when {
(currentFragment == null) -> supportFragmentManager
.beginTransaction()
.replace(R.id.my_fragment_container, myFragment)
.commit()
(currentFragment is MyFragment) -> doNothing()
else -> supportFragmentManager
.beginTransaction()
.replace(R.id.my_fragment_container, myFragment)
.commit()
}
}

当我在manageFragment()之后检查时,此方法在onCreate()中返回null

supportFragmentManager.findFragmentById(R.id.my_fragment_container)

然而,当我在onPostCreate()中调用相同的方法时

override fun onPostCreate(savedInstanceState: Bundle?) {
super.onPostCreate(savedInstanceState)
currentFragment = supportFragmentManager.findFragmentById(R.id.my_fragment_container)
}

它有我的碎片集

当使用数据绑定时,我应该这样添加/重新放置片段吗?

为什么我的碎片要到postCreate()才能返回

我有一种感觉,因为一旦我提交了碎片事务来将我的碎片添加到FragmentContainerView,布局仍然需要测量等等;一段时间";在findFragmentById()可以返回我添加的片段之前已经过去了。

是否有一个布局侦听器可以添加到FragmentContainerView中,以检测我的片段何时被实际添加并可见?

为什么我的片段直到postCreate((才返回

Commit是异步

是否有一个布局侦听器可以添加到FragmentContainerView中,以检测我的片段何时实际添加并可见?

你为什么关心这个?

相关内容

最新更新