在观察到 Livedata 更改后,ViewSwitcher 在初始化时未使用 .showNext() 切换视图
ViewSwitcher not switching view with .showNext() at initialization, after Livedata change is observed
我在 DialogFragment 中有一个 ViewSwitcher。切换器包含 2 个视图,“1. 选择视图”和“2. 选定视图”。
初始视图默认为“1.选择视图”。当来自观察事件数据库的 fromType 非零时,我希望 Livedata 观察者调用 dialogViewSwitcher.showNext(),但在对话框初始化时不会调用 showNext() 函数。
DialogFragment,在 onCreateDialog 内:
viewModel.event.observe(this, Observer {
it?.let {
viewModel.setCurrentFromType(it.fromPlaceType)
}
})
viewModel.currentFromType.observe(this, Observer {
if (it == 0) {
viewModel.setCurrentFromStatus(false)
} else {
viewModel.setCurrentFromStatus(true)
}
})
viewModel.currentFromStatus.observe(this, Observer {
binding.dialogViewSwitcher.showNext()
})
视图模型:
private val _currentFromType = MutableLiveData(0)
val currentFromType: LiveData<Int>
get() = _currentFromType
fun setCurrentFromType(fromType: Int) {
_currentFromType.value = fromType
}
private val _currentFromStatus = MutableLiveData(false)
val currentFromStatus: LiveData<Boolean>
get() = _currentFromStatus
fun setCurrentFromStatus(status: Boolean) {
_currentFromStatus.value = status
}
日志显示当对话框打开时 currentFromStatus 观察到变化(从 false 到 true),但我认为是因为当观察到 currentFromStatus 的变化时 dialogViewSwitcher 尚未在 onCreatDialog 内部初始化,所以 showNext( ) 什么也没做。我还查看了数据绑定,但没有在 xml 中找到显示第二个视图的 ViewSwitcher 属性。我应该怎么做才能解决此问题?
未找到在 onCreate 中以编程方式显示 Next() 的好方法。相反,我删除了 viewswitcher 并对 2 个子视图中的每一个的可见性使用数据绑定,这种方式效果很好。
我在 DialogFragment 中有一个 ViewSwitcher。切换器包含 2 个视图,“1. 选择视图”和“2. 选定视图”。
初始视图默认为“1.选择视图”。当来自观察事件数据库的 fromType 非零时,我希望 Livedata 观察者调用 dialogViewSwitcher.showNext(),但在对话框初始化时不会调用 showNext() 函数。
DialogFragment,在 onCreateDialog 内:
viewModel.event.observe(this, Observer {
it?.let {
viewModel.setCurrentFromType(it.fromPlaceType)
}
})
viewModel.currentFromType.observe(this, Observer {
if (it == 0) {
viewModel.setCurrentFromStatus(false)
} else {
viewModel.setCurrentFromStatus(true)
}
})
viewModel.currentFromStatus.observe(this, Observer {
binding.dialogViewSwitcher.showNext()
})
视图模型:
private val _currentFromType = MutableLiveData(0)
val currentFromType: LiveData<Int>
get() = _currentFromType
fun setCurrentFromType(fromType: Int) {
_currentFromType.value = fromType
}
private val _currentFromStatus = MutableLiveData(false)
val currentFromStatus: LiveData<Boolean>
get() = _currentFromStatus
fun setCurrentFromStatus(status: Boolean) {
_currentFromStatus.value = status
}
日志显示当对话框打开时 currentFromStatus 观察到变化(从 false 到 true),但我认为是因为当观察到 currentFromStatus 的变化时 dialogViewSwitcher 尚未在 onCreatDialog 内部初始化,所以 showNext( ) 什么也没做。我还查看了数据绑定,但没有在 xml 中找到显示第二个视图的 ViewSwitcher 属性。我应该怎么做才能解决此问题?
未找到在 onCreate 中以编程方式显示 Next() 的好方法。相反,我删除了 viewswitcher 并对 2 个子视图中的每一个的可见性使用数据绑定,这种方式效果很好。