Java 如何在Android上从SharedReferences获取多个值?

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

我正在我的测试应用程序上注册一个用户,并使用SharedReferences将我的所有数据保存到持久存储中,但我想在登录后通过调用getData方法获取这些值,该方法必须返回为当前注册用户保存的所有数据,包括他的姓名、用户名、,和出生日期。 所以我考虑使用地图,因为它是java中的字典

但是我不确定我在getData中的捕获是否正确

下面是我的代码:

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转换为映射。。。我建议您创建一个用户对象并返回该对象。我认为您不能将共享引用转换为映射。。。我建议您创建一个用户对象并返回它。