如何从 Android 上的 sharedPreferences 获取多个值?
How to get multiple values from sharedPreferences on Android?
我正在我的测试应用程序上注册一个用户,并使用 sharedPreferences 将我的所有数据保存到持久存储中,但我想在登录后通过调用 getData[=22 来获取这些值=] 方法必须 return 为当前注册用户保存的所有数据,其中包括他的姓名、用户名和出生日期。
所以我想到了使用地图,因为它是 java.
中的字典
但是我不确定我在 getData.
中的 catch 是否做对了
下面是我的代码:
public class AddUser {
private static String NAME_KEY;
private static String DOB_KEY;
private static String USERNAME_KEY;
private static String PASSWORD_KEY;
Map<String,String> values = new HashMap<String,String>();
public static void saveData(Context context, String name, String dob, String username, String password){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(NAME_KEY, name);
editor.putString(DOB_KEY, dob);
editor.putString(USERNAME_KEY, username);
editor.putString(PASSWORD_KEY, password);
editor.commit();
}
public Map<String, String> getData(Context context, String name, String dob, String username){
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
try{
sharedPrefs.getString(NAME_KEY, name);
sharedPrefs.getString(USERNAME_KEY, username);
sharedPrefs.getString(DOB_KEY, dob);
values = (Map<String, String>) sharedPrefs;
return values;
} catch(Exception e) {
e.printStackTrace();
return values;
}
}
}
我的目标是获取 returned 值名称、用户名和出生日期,并将它们显示在我想要的不同字段中。
public Map<String, String> getData(Context context) { //other paramaters are only usefull if you want provide default values
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
Map<String, String> userDetails = new HashMap<String,String>(); //create the map with String->String
String name = sharedPrefs.getString(NAME_KEY, null); //get the value
userDetails.put(NAME_KEY, name); //put it in the map
String username = sharedPrefs.getString(USERNAME_KEY, null);
userDetails.put(USERNAME_KEY, username);
String dob = sharedPrefs.getString(DOB_KEY, null);
userDetails.put(DOB_KEY, dob);
return userDetails; //return the map
}
在这种情况下,我建议您使用 class 而不是地图。这些值彼此相关。
sharedPrefs.getString(NAME_KEY,name)
将 return 一个您需要存储在变量中的字符串值。
SharedPreferences 本身就像一个 hashmap,它具有键值对,如果您签入 android 文件,SharedPreferences 值将存储在 xml 文件中。
您不需要使用地图。
做就是了
String name=sharedPrefs.getString(NAME_KEY,name)
我正在我的测试应用程序上注册一个用户,并使用 sharedPreferences 将我的所有数据保存到持久存储中,但我想在登录后通过调用 getData[=22 来获取这些值=] 方法必须 return 为当前注册用户保存的所有数据,其中包括他的姓名、用户名和出生日期。 所以我想到了使用地图,因为它是 java.
中的字典但是我不确定我在 getData.
中的 catch 是否做对了下面是我的代码:
public class AddUser {
private static String NAME_KEY;
private static String DOB_KEY;
private static String USERNAME_KEY;
private static String PASSWORD_KEY;
Map<String,String> values = new HashMap<String,String>();
public static void saveData(Context context, String name, String dob, String username, String password){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(NAME_KEY, name);
editor.putString(DOB_KEY, dob);
editor.putString(USERNAME_KEY, username);
editor.putString(PASSWORD_KEY, password);
editor.commit();
}
public Map<String, String> getData(Context context, String name, String dob, String username){
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
try{
sharedPrefs.getString(NAME_KEY, name);
sharedPrefs.getString(USERNAME_KEY, username);
sharedPrefs.getString(DOB_KEY, dob);
values = (Map<String, String>) sharedPrefs;
return values;
} catch(Exception e) {
e.printStackTrace();
return values;
}
}
}
我的目标是获取 returned 值名称、用户名和出生日期,并将它们显示在我想要的不同字段中。
public Map<String, String> getData(Context context) { //other paramaters are only usefull if you want provide default values
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
Map<String, String> userDetails = new HashMap<String,String>(); //create the map with String->String
String name = sharedPrefs.getString(NAME_KEY, null); //get the value
userDetails.put(NAME_KEY, name); //put it in the map
String username = sharedPrefs.getString(USERNAME_KEY, null);
userDetails.put(USERNAME_KEY, username);
String dob = sharedPrefs.getString(DOB_KEY, null);
userDetails.put(DOB_KEY, dob);
return userDetails; //return the map
}
在这种情况下,我建议您使用 class 而不是地图。这些值彼此相关。
sharedPrefs.getString(NAME_KEY,name)
将 return 一个您需要存储在变量中的字符串值。
SharedPreferences 本身就像一个 hashmap,它具有键值对,如果您签入 android 文件,SharedPreferences 值将存储在 xml 文件中。
您不需要使用地图。
做就是了
String name=sharedPrefs.getString(NAME_KEY,name)