如何用 Android 数据绑定替换 androidx.fragment.app.FragmentContainerView 中的片段
How to replace fragment in androidx.fragment.app.FragmentContainerView with Android databinding
我当前的 Android 应用程序使用了数据绑定。
我在尝试将片段添加到 androidx.fragment.app.FragmentContainerView
时遇到问题。
我已经设法得到了我想要的效果,但是感觉方法不正确。
我不明白我哪里弄错了。
在我的 activity 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()
之后检查此方法 return 在 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)
}
它有我的片段集
我应该这样吗adding/re[在使用数据绑定时放置片段?
为什么我的片段 return 直到 postCreate()
才被编辑
我有一种感觉,因为一旦我提交了片段事务以将我的片段添加到 FragmentContainerView
,布局仍然需要测量等。所以在 findFragmentById()
之前“一段时间”过去了return我添加的片段。
有没有我可以添加到 FragmentContainerView
的布局侦听器,以检测我的片段何时实际添加并变得可见?
Why doesnt my fragment get returned until postCreate()
is there a layout listener I can add to FragmentContainerView to detect when my fragment is actually added and becomes visible?
你为什么关心这个?
我当前的 Android 应用程序使用了数据绑定。
我在尝试将片段添加到 androidx.fragment.app.FragmentContainerView
时遇到问题。
我已经设法得到了我想要的效果,但是感觉方法不正确。
我不明白我哪里弄错了。
在我的 activity 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()
之后检查此方法 return 在 onCreate()
supportFragmentManager.findFragmentById(R.id.my_fragment_container)
但是当我在 onPostCreate()
override fun onPostCreate(savedInstanceState: Bundle?) {
super.onPostCreate(savedInstanceState)
currentFragment = supportFragmentManager.findFragmentById(R.id.my_fragment_container)
}
它有我的片段集
我应该这样吗adding/re[在使用数据绑定时放置片段?
为什么我的片段 return 直到 postCreate()
我有一种感觉,因为一旦我提交了片段事务以将我的片段添加到 FragmentContainerView
,布局仍然需要测量等。所以在 findFragmentById()
之前“一段时间”过去了return我添加的片段。
有没有我可以添加到 FragmentContainerView
的布局侦听器,以检测我的片段何时实际添加并变得可见?
Why doesnt my fragment get returned until postCreate()
is there a layout listener I can add to FragmentContainerView to detect when my fragment is actually added and becomes visible?
你为什么关心这个?