Java 如何在Android上从SharedReferences获取多个值?
我正在我的测试应用程序上注册一个用户,并使用SharedReferences将我的所有数据保存到持久存储中,但我想在登录后通过调用getData方法获取这些值,该方法必须返回为当前注册用户保存的所有数据,包括他的姓名、用户名、,和出生日期。 所以我考虑使用地图,因为它是java中的字典 但是我不确定我在getData中的捕获是否正确 下面是我的代码:Java 如何在Android上从SharedReferences获取多个值?,java,android,android-sharedpreferences,Java,Android,Android Sharedpreferences,我正在我的测试应用程序上注册一个用户,并使用SharedReferences将我的所有数据保存到持久存储中,但我想在登录后通过调用getData方法获取这些值,该方法必须返回为当前注册用户保存的所有数据,包括他的姓名、用户名、,和出生日期。 所以我考虑使用地图,因为它是java中的字典 但是我不确定我在getData中的捕获是否正确 下面是我的代码: public class AddUser { private static String NAME_KEY; private s
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;
}
}
}
公共类AddUser{
私有静态字符串名称\u密钥;
私有静态字符串DOB_密钥;
私有静态字符串用户名\ U密钥;
私有静态字符串密码\u密钥;
映射值=新的HashMap();
公共静态void saveData(上下文上下文、字符串名称、字符串dob、字符串用户名、字符串密码){
SharedReferences prefs=PreferenceManager.GetDefaultSharedReferences(上下文);
SharedReferences.Editor=prefs.edit();
编辑器.putString(名称\键,名称);
编辑器.putString(DOB_键,DOB);
编辑器.putString(用户名\密钥,用户名);
编辑器.putString(密码\密钥,密码);
commit();
}
公共映射getData(上下文上下文、字符串名称、字符串dob、字符串用户名){
SharedReferences SharedReferences=PreferenceManager.GetDefaultSharedReferences(上下文);
试一试{
getString(NAME\u KEY,NAME);
getString(用户名\密钥,用户名);
getString(DOB_键,DOB);
值=(映射)SharedPref;
返回值;
}捕获(例外e){
e、 printStackTrace();
返回值;
}
}
}
我的目标是获取返回的值name、username和date of birth,并将它们显示在我想要的不同字段上。public-Map-getData(Context-Context){//只有在您想提供默认值时,其他参数才有用
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
}
SharedReferences SharedReferences=PreferenceManager.GetDefaultSharedReferences(上下文);
Map userDetails=newhashmap();//使用String->String创建映射
String name=sharedPrefs.getString(name_KEY,null);//获取值
userDetails.put(NAME_KEY,NAME);//将其放在地图中
字符串username=sharedPrefs.getString(username\u KEY,null);
userDetails.put(用户名\密钥,用户名);
String dob=sharedPrefs.getString(dob_键,null);
userDetails.put(DOB_键,DOB);
return userDetails;//返回映射
}
在这种情况下,我建议您使用类而不是映射。这些值相互关联 publicmap-getData(Context-Context){//只有在您希望提供默认值时,其他参数才可用
SharedReferences SharedReferences=PreferenceManager.GetDefaultSharedReferences(上下文);
Map userDetails=newhashmap();//使用String->String创建映射
String name=sharedPrefs.getString(name_KEY,null);//获取值
userDetails.put(NAME_KEY,NAME);//将其放在地图中
字符串username=sharedPrefs.getString(username\u KEY,null);
userDetails.put(用户名\密钥,用户名);
String dob=sharedPrefs.getString(dob_键,null);
userDetails.put(DOB_键,DOB);
return userDetails;//返回映射
}
在这种情况下,我建议您使用类而不是映射。这些值相互关联
sharedPrefs.getString(NAME\u KEY,NAME)
将返回需要存储在变量中的字符串值
SharedReferences本身就像一个hashmap,它有键值对,如果您签入android文件,SharedReferences值就会存储在xml文件中
你不需要使用地图。
照办
String name=sharedPrefs.getString(name\u KEY,name)
sharedPrefs.getString(name\u KEY,name)
将返回需要存储在变量中的字符串值
SharedReferences本身就像一个hashmap,它有键值对,如果您签入android文件,SharedReferences值就会存储在xml文件中
你不需要使用地图。
照办
String name=sharedPrefs.getString(name\u KEY,name)
我认为您无法将SharedPreferences转换为映射。。。我建议您创建一个用户对象并返回该对象。我认为您不能将共享引用转换为映射。。。我建议您创建一个用户对象并返回它。