我对 Transformations.map 的绑定似乎不起作用

My binding to a Transformations.map doesn't seem to be working

正在尝试将按钮的已启用 属性 绑定到 Transformations.map。我不知道为什么它不起作用。我相信我正在做与这个 Google 代码实验室完全相同的事情:https://codelabs.developers.google.com/codelabs/kotlin-android-training-quality-and-states/index.html?index=..%2F..android-kotlin-fundamentals#4

这是我得到的:

    private val loginFormState = MutableLiveData<LoginFormState>()

    private var _username = ""
    var username
        get() = _username
        set(value) {
            if(value == _username) return
            _username = value
            validateFormState()
        }

    private var _password = ""
    var password
        get() = _password
        set(value) {
            if(value == _password) return
            _password = value
            validateFormState()
        }

    init {
        _busy.value = false
    }

    val loginButtonEnabled: LiveData<Boolean> = Transformations.map(loginFormState) { it.isDataValid }

    private fun validateFormState() {
        val formState = LoginFormState()
        formState.isUsernameValid = username.isNotEmpty()
        formState.isPasswordValid = password.isNotEmpty()
        loginFormState.value = formState
    }
...
...
        <Button
            android:enabled="@{loginViewModel.loginButtonEnabled}"
            android:id="@+id/login_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="start"
            android:layout_marginStart="48dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="48dp"
            android:layout_marginBottom="64dp"
            android:onClick="@{() -> loginViewModel.onLogin()}"
            android:text="@string/action_sign_in"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/password"
            app:layout_constraintVertical_bias="0.2" />
...

非常感谢任何帮助!

所以我刚刚弄明白了。我不知道为什么会这样,因为其他绑定之前工作正常,但是通过设置:

binding.lifecycleOwner = this

它开始工作了。我最初没有设置它,因为我在 Activity 而不是 Fragment 中工作。如果有人知道为什么这使它起作用,将不胜感激!!