【问题标题】:Updating Checkbox value in Preference Screen upon changing the value in SharedPreferences in Android在 Android 中更改 SharedPreferences 中的值时更新首选项屏幕中的复选框值
【发布时间】:2011-12-05 11:08:58
【问题描述】:


我有一个使用用户位置的应用程序。我有一个对话框(下图)询问用户是否允许“允许”或“禁止”应用程序使用用户的位置(安装后用户第一次打开应用程序或当用户尝试使用基于位置的服务时弹出对话框使用用户位置被用户“禁止”)。


我还在PreferenceActivity 中使用偏好项(一个复选框)(下图),用户可以在其中切换他的偏好。


要更改 sharedpreference 的值,我使用了此代码

    public void onClick(DialogInterface dialog, int id)
    {
        sharedPrefs =getSharedPreferences("prefs",MODE_WORLD_WRITEABLE);
        Editor editor = sharedPrefs.edit();
        editor.putBoolean("locationPermission", true);
        editor.commit();
}

我曾期望复选框值会根据对话框选择自动更改,因为键“locationPermission”将值保存到复选框。但事实并非如此。

现在如何将对话框(图 1)选择映射到复选框值(图 2)?

【问题讨论】:

    标签: android android-preferences android-dialog


    【解决方案1】:

    问题已通过使用

    sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

    解决 而不是

    sharedPrefs = getSharedPreferences("prefs", MODE_WORLD_WRITEABLE);

    【讨论】:

      【解决方案2】:

      您可以在PreferenceActivityonCreate 中调用addPreferencesFromResource,以便根据首选项填充您的用户界面。 此外,您可能需要确保您的 CheckBoxPreference 在其 XML 定义中包含 android:persistent-"true"

      【讨论】:

      • 我在PreferenceActivityonCreate 方法中调用了addPreferencesFromResource(R.xml.prefs)。我现在添加了android:persistent="true"。没有帮助。对话框中的选择未反映在“首选项屏幕”中
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多