Android: 通过LiveData数据绑定勾选和取消勾选开关按钮

Android: Check & Uncheck Switch Button Through DataBinding with LiveData

我目前正在尝试使用数据绑定来设置我的 Switch 按钮的检查状态,但出于某种原因我的状态从未改变?

在我的设置页面中,我执行以下操作:

  1. 检查开关是否为真
  2. Post 我的 livedata 变量的值
  3. 退出设置页面
  4. 重新输入设置
  5. 应该检查 Switch,因为在我的 XML 中我绑定了它,但它是错误的。

文件 - SettingsFragment - SettingsViewModel - SettingsLayout.XML

SettingsViewModel

    private val _checked = MutableLiveData<Boolean>()
    val checked : LiveData<Boolean> = _checked

SettingsLayout.XML

                <Switch
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right|center"
                android:layout_marginRight="@dimen/margin_big
                android:checked="@{viewModel.checked}"/>

我已经仔细检查以确保在我的 SettingsFragment 中我也做了 DataBindingUtil.inflate 并通过了我的 SettingsViewModel .

您需要像这样使用Two-way data binding

android:checked="@={viewModel.checked}"

编辑:确保在您的片段中添加 binding.lifecycleOwner = viewLifecycleOwner