繁体   English   中英

android应用中的多个SharedPreferences

[英]Multiple SharedPreferences in an android app

SharedPreferences pref = getSharedPreferences("user1", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putString("firstName", firstnameString);
editor.commit();

SharedPreferences pref = getSharedPreferences("user2", Context.MODE_PRIVATE);
...

我试图使用上面的代码创建多个sharedpreferences,并尝试使用下面的代码访问所有sharedpreference名称,即user1,user2等。

但是,即使创建了sharedpreference,在访问时我也会收到NULLPointerException。

Map<String,?> allsharedpref = pref.getAll();
if(allsharedpref!=null){
    for(Map.Entry<String, ?> entry : allsharedpref.entrySet()){
    Toast.makeText(this, entry.getKey()+"\n", Toast.LENGTH_LONG).show();
}

从您创建的所有SharedPreferences获取值。 您将需要从shared_prefs读取文件名:

File prefsdir = new File(getApplicationInfo().dataDir,"shared_prefs");
String[] list = prefsdir.list();
String[] preflist = new String[list.length()];
for(int i=0;i<list.length(),i++){
  String preffile = list[i].substring(0, list[i].length()-4);
  preflist[i]=preffile;
}

现在使用preflist从所有SharedPreferences获取值:

for(int index=0;index<preflist.length(),index++){
  SharedPreferences spPref = getSharedPreferences(preflist[index], MODE_PRIVATE);
  Map<String,?> allsharedpref = spPref.getAll();
  if(allsharedpref!=null){
    for(Map.Entry<String, ?> entry : allsharedpref.entrySet()){
    Toast.makeText(this, entry.getKey()+"\n", Toast.LENGTH_LONG).show();
  }
}

只有在Activity上调用了onCreate ()之后,才能调用getSharedPreferences ()。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM