在初始化时,ViewSwitcher没有用.showNext()切换视图,在观察到Livedata变化后,ViewSwitcher没有切换视图。

问题描述 投票:0回答:1

我在一个DialogFragment里面有一个ViewSwitcher。这个切换器有两个视图,一个是 "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() 
        })

ViewModel:

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的变化时,在onCreatDialog里面,dialogViewSwitcher还没有初始化,所以showNext()没有任何作用。我还研究了数据绑定,在xml中没有找到一个显示第二个视图的ViewSwitcher属性。我应该怎么做才能解决这个行为?

android kotlin android-livedata viewswitcher
1个回答
0
投票

在onCreate时没有找到一个好的方法来编程显示Next()。相反,我删除了viewswitcher,并对2个子视图的可见性分别使用databinding,这种方式效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.