Android Preference相同getPreference()值的不同数据

时间:2014-09-11 04:30:37

标签: java android sharedpreferences android-preferences

我正在使用Android共享首选项来保存一些小的布尔数据。现在,如果我使用相同的关键字字符串作为字符串参数传递给 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();
    }

2 个答案:

答案 0 :(得分:0)

如果您使用不同的键值(例如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();
}

答案 1 :(得分:0)

他们不会发生冲突

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


有关详细信息,请参阅:

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