如何从 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)