【问题标题】:Android - how to save CheckBox enabled stateAndroid - 如何保存复选框启用状态
【发布时间】:2013-04-10 07:31:54
【问题描述】:

我有一些 PreferenceActivity,还有一些 CheckBox。

<PreferenceScreen
        android:key="prefGraphValues"
        android:title="@string/pref_graph_values"
        android:persistent="false" >
         <CheckBoxPreference
            android:defaultValue="true"
            android:key="Temp.Dry"
            android:summary="@string/pref_graph_value_temp_dry_summary"
            android:title="@string/pref_graph_value_temp_dry" >
        </CheckBoxPreference>
</PreferenceScreen>

在代码的某个地方我有这样的东西:

checkBox.setEnabled(false);

但是当我关闭此活动并稍后启动它时,复选框已启用。我可以保存这个状态吗?

谢谢

【问题讨论】:

    标签: android settings


    【解决方案1】:

    将您的持久属性更改为 true。

    android:persistent="true"
    

    实际上,如果您将其分配给 false,则意味着首选项不会将值存储到 SharedPreferences,这就是您的状态未保存在“下一次启动”中的原因。

    【讨论】:

    • 是的,这个属性保存了checkBox的状态是选中还是不选中,但不保存状态是启用还是禁用。我不知道该怎么做。其他想法?
    • @Papaja 所以将状态显式保存到 SharedPreferences。当您将启用设置为 false 时,将其保存到 SharedPreferences 中,例如 Temp.DryIsNotEnabled 您知道如何实现吗?或者你需要一些代码示例?
    • 是的,我知道如何实现它,但我认为这是 API 在这种情况下实现的另一种方式(更简单)。但是是的,这对我来说是解决方案 :-) 谢谢。
    【解决方案2】:

    您必须将更改应用到 sharedpreference 并且下次复选框将通过 sharedpreference 中的键检索值。

    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
    sp.edit().putInt(your_key, your_value).apply();
    

    【讨论】:

      猜你喜欢
      • 2021-07-18
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多