Android:通过 LiveData 进行数据绑定检查和取消选中开关按钮

Bel*_*gor 1 android button kotlin android-databinding

我目前正在尝试使用数据绑定来设置“切换”按钮的检查状态,但由于某种原因我的状态永远不会改变?

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

  1. 检查开关是否为 true
  2. 将值发布到我的 livedata 变量
  3. 退出设置页面
  4. 重新输入设置
  5. 应该检查 Switch,因为在我的 XML 中我绑定到它,但它是 false。

文件- SettingsFragment - SettingsViewModel - SettingsLayout.XML

设置视图模型

    private val _checked = MutableLiveData<Boolean>()
    val checked : LiveData<Boolean> = _checked
Run Code Online (Sandbox Code Playgroud)

设置布局.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}"/>
Run Code Online (Sandbox Code Playgroud)

我已经仔细检查以确保在我的SettingsFragment中我也执行了DataBindingUtil.inflate并传递了我的 SettingsViewModel。

Sau*_*rat 5

您需要像这样使用双向数据绑定:

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

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

  • 确保您已在片段中添加“binding.lifecycleOwner = viewLifecycleOwner”。 (4认同)