Android:无法 enable/disable 带 ObservableBoolean 的按钮

Android: Unable to enable/disable Button with ObservableBoolean

ViewModel中有以下Observable变量

var isEmailValid = ObservableBoolean(false)
var isPasswordValid = ObservableBoolean(false)

并在某些条件下在 ViewModel 中设置值

fun validateUserInputs(email: Boolean, password: Boolean){
    isEmailValid.set(email)
    isPasswordValid.set(password)
}

最后,从XML布局访问如下:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>

        <variable
            name="viewModel"
            type="com.packageName.folder.ViewModel" />
    </data>

...

  <com.google.android.material.button.MaterialButton
    android:id="@+id/btnSubmit"
    android:text="@string/sign_in"
    android:enabled="@{viewModel.isEmailValid &amp;&amp; viewModel.isPasswordValid? true: false}" />
...

</layout>

当两个 Observables 都设置为 true 时,按钮未启用。
也尝试了 viewModel.isEmailValid()viewModel.isEmailValid()==true 选项。

--
在绑定 XMl 中访问上述变量的正确方法是什么?

我得到了答案。

binding.viewModel = viewModel 在 Activity 的 onCreate() 中丢失。

那么,下面就完成了与ViewModel的Databinding。

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = DataBindingUtil.setContentView(this, R.layout.activity_abc)
        binding.viewModel = viewModel
        binding.lifecycleOwner = this
        ...
    }