片段中的复选框在某些Android设备上被禁用

片段中的复选框在某些Android设备上被禁用,android,android-fragments,callback,android-checkbox,android-version,Android,Android Fragments,Callback,Android Checkbox,Android Version,我有一个android应用程序,有一个表格(3页,从第2页开始)。在第2页和第3页中,我有一个包含复选框的相同片段。此复选框的状态通过视图模型同步(第2页和第3页的状态相同)。 视图模型有时会对此片段调用回调(对于测试,此回调为空) 它在全球范围内运行良好,但在某些设备/android版本上除外 以下是非工作场景: 启动活动(显示第2页,默认选中复选框) 等待视图模型调用回调(在我的例子中,gps发送其第一个位置) 切换到第3页 取消选中复选框 切换回第2页 预期结果: 该复选框未选中 观察结果

我有一个android应用程序,有一个表格(3页,从第2页开始)。在第2页和第3页中,我有一个包含复选框的相同片段。此复选框的状态通过视图模型同步(第2页和第3页的状态相同)。 视图模型有时会对此片段调用回调(对于测试,此回调为空) 它在全球范围内运行良好,但在某些设备/android版本上除外

以下是非工作场景:

  • 启动活动(显示第2页,默认选中复选框)
  • 等待视图模型调用回调(在我的例子中,gps发送其第一个位置)
  • 切换到第3页
  • 取消选中复选框
  • 切换回第2页
  • 预期结果: 该复选框未选中

    观察结果: 复选框被选中,并且被禁用(灰显)

    尽管该复选框看起来已禁用,但您可以单击它:

    • 下一步单击:复选框已选中并启用
    • 下一步单击:复选框已选中并禁用
    如果对回调的调用(空)被删除,那么它可以正常工作

    如果我用@android:drawable/btn_radio替换默认的drawable,那么它可以正常工作

    如果我用一个选择器将默认的drawable替换为2项(state_checked=“false”/“true”),那么它可以正常工作

    如果在调用回调之前,我在第2页的复选框上切换了off/on,那么它工作正常

    我的问题是:

    • 采用安卓8.0.0的三星A3设备
    • 带安卓7.1.1的摩托罗拉E4
    它在Android 4.2.1、7、10和11的一些设备上运行良好

    知道发生了什么吗


    注意:我可以一直使用自定义绘图,但我宁愿避免使用。

    我也尝试过用
    ?android:attr/textCheckMark
    替换默认绘图,效果很好