【问题标题】:Using android two way databinding with checkbox使用带有复选框的android双向数据绑定
【发布时间】:2018-08-13 22:27:15
【问题描述】:

我正在尝试在片段中使用 android 双向 databindingcheckBox
我在viewPager 中有多个片段,自定义FragmentStatePagerAdapter 和一个viewModel 在第一个fragment
我有一个带有以下代码的复选框:

<CheckBox
            android:id="@+id/checkbox_accept_rules"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:checked="@={viewmodel.isAccept}"
            android:gravity="right"
            android:text="text..." />

在视图模型中:

private final ObservableBoolean isAccept = new ObservableBoolean(false);

当我转到最后一个fragment 并返回第一个checkBox 时,不再选中,复选框的颜色为真,但没有选中图标! 以前有人遇到过这个问题吗?

提前致谢

【问题讨论】:

  • 我认为这是android支持库中的一个错误,因为更新后问题消失了
  • @Sepher,要更新哪个版本?
  • @mochadwi 最新版本 27.1.1
  • @Sepher 您是否也使用了 AS 3.1.2 版本?我已将支持库更新到 27.1.1,但仍无法修复复选框问题 T_T
  • @mochadwi 是的,如果有帮助,我会使用带有 gradle:3.0.0 的 android studio 3.1.2!

标签: android viewmodel android-mvvm


【解决方案1】:

查看寻呼机的片段比普通片段具有独特的生命周期。如果您有三个片段 A->B->C 并且您从 C 滑动 B 则片段 A 将被销毁。您可以通过覆盖方法来检查它onDestroy在片段A中。当您再次滑动到A时,它将再次重新创建,并且所有值将再次初始化。这就是您的复选框值未选中的原因。尝试将复选框的值保存在sharedPreference中,因此无论何时重新创建它都会采用值来自 sharedPreference 并记住当您的 viewpager 将被销毁或它的容器活动被破坏时清除 sharedPrefence 值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-28
    • 2017-03-06
    • 2016-08-01
    • 2014-07-03
    • 1970-01-01
    • 2018-08-03
    • 2021-06-10
    相关资源
    最近更新 更多