【问题标题】:Android Preference different data for same getPreference() valueAndroid Preference 相同 getPreference() 值的不同数据
【发布时间】:2014-09-11 04:30:36
【问题描述】:

我正在使用 Android Shared Preference 来保存一些小的布尔数据。现在,如果我使用作为字符串参数传递给 getSharedPreferences() 方法的相同关键字字符串来保存我的所有布尔值,例如该示例代码,它们是否冲突?

我的意思是,如果我对所有 getSharedPreferences() 方法使用通用字符串,如果我在 putBoolean() 中使用不同的字符串,它们是否被正确保存? getSharedPreferences()的String参数究竟有什么作用?

我用它来保存值:

public void saveStatus(boolean b){
        SharedPreferences preferences = getApplicationContext().getSharedPreferences("STATUS", android.content.Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putBoolean("s1",b);
        editor.commit();
    }

【问题讨论】:

    标签: java android sharedpreferences android-preferences


    【解决方案1】:

    如果您为每个布尔值使用不同的键值(例如 s1 s2 s3 不同的关键字),它们不会发生冲突,否则它将覆盖之前的值(这种方式将使键唯一):

    你为什么不传递两个参数来解决这样的问题:

    public void saveStatus(String key,boolean b){
        SharedPreferences preferences = getApplicationContext().getSharedPreferences("STATUS", android.content.Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putBoolean(key,b);
        editor.commit();
    }
    

    【讨论】:

      【解决方案2】:

      它们不会冲突

      共享首选项存储为 xml 文件。因此,您在 getSharedPreferences() 中传递的 string 参数(第一个)是 xml 文件的名称,该文件将在持久存储中创建,而您正在使用的文件在putBoolean() 是属性的名称,其值指定为第二个参数,该参数将添加到该 xml 文件中。


      有关更多详细信息,另请参阅:

      1. Where are shared preferences stored?
      2. About XML files

      【讨论】:

      • 谢谢。这就是事实!现在我很清楚了。我认为将所有相同类型的值保存在一个 xml 中应该比使用我在以前使用过的不同 xml 更好
      • 是的,这取决于您的选择和要求。
      猜你喜欢
      • 2017-06-03
      • 2018-12-06
      • 2017-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      • 2019-09-25
      相关资源
      最近更新 更多