【问题标题】:android default values for shared preferences共享首选项的android默认值
【发布时间】:2013-07-19 04:39:48
【问题描述】:

我正在尝试了解 Android 的 SharedPreferences。我是初学者 也不是很了解。

我为我的应用偏好设置了这个类

public class Preferences {
    public static final String MY_PREF = "MyPreferences";

    private SharedPreferences sharedPreferences;
    private Editor editor;

    public Preferences(Context context) {
        this.sharedPreferences = context.getSharedPreferences(MY_PREF, 0);
        this.editor = this.sharedPreferences.edit();
    }

    public void set(String key, String value) {
        this.editor.putString(key, value);
        this.editor.commit();
    }

    public String get(String key) {
        return this.sharedPreferences.getString(key, null);
    }

    public void clear(String key) {
        this.editor.remove(key);
        this.editor.commit();
    }

    public void clear() {
        this.editor.clear();
        this.editor.commit();
    }
}

问题是我想设置默认首选项。它们将在安装应用程序时设置,并且可以在应用程序之后修改并保持持久性。 我听说有一个preferences.xml,但我不明白这个过程。

有人可以帮我吗?

感谢您的宝贵时间

【问题讨论】:

    标签: android sharedpreferences default


    【解决方案1】:

    很简单,如果你想为每个变量设置一个单独的默认值,你需要为每个变量做一个,但是在你的方法上:

     public String get(String key) {
        return this.sharedPreferences.getString(key,"this is your default value");
    }
    

    如果变量从未被用户访问或从未创建,系统会将默认值设置为值,如果您或用户更改了此值,则默认值将被忽略。见http://developer.android.com/guide/topics/data/data-storage.html#pref

    直接来自 Android 文档:

    SharedPreferences 类提供了一个通用框架,允许 您可以保存和检索原始数据的持久键值对 类型。您可以使用 SharedPreferences 保存任何原始数据: 布尔值、浮点数、整数、长整数和字符串。此数据将保留 跨用户会话(即使您的应用程序被终止)。

    【讨论】:

    • 感谢您的评论,我认为这是我需要的,但是否可以从文件中加载此默认值?还是代码中的其他地方?
    • 当然。您可以在 XML 或文本文件中编码您的默认值并在您的活动中读取它。您还可以将默认值定义为另一个类中的变量并使用它们,可能通过将它们作为参数传递。
    • 好的,我试试这个。谢谢
    【解决方案2】:

    您可以将默认值存储在字符串资源中:

    <string name="key_name">default_value</string>
    

    然后得到它如下:

    int ResId = context.getResources().getIdentifier(key_name, "string", context.getPackageName()));
    prefs.getString(key_name,context.getResources().getString(ResId);
    

    【讨论】:

      【解决方案3】:

      你可以使用getX()方法的默认值参数吗?

      例如,要获取名为“用户名”的String,您可以使用以下代码:

      String username = prefs.getString("username_key", "DefaultUsername");
      

      您可以简单地在 Preferences 类中定义默认值。

      【讨论】:

      • 是的,这可能是一个解决方案,但是否可以不在代码中而是在文件中定义这些首选项?
      猜你喜欢
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      • 2012-09-28
      • 2019-05-11
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      相关资源
      最近更新 更多