android共享首选项一键多值
我的查询是直截了当的,在谷歌上找不到答案: 例如: 存储库1->username1 ->密码1 存储库2->username2 ->密码2 存储库3->username3 ->密码3 如上所述,我有一个包含三个存储库的对话框。当用户自动选择存储库时,会弹出另一个对话框,输入用户名和密码 所以,我试图实现的是用一个键将存储库名称、用户名和密码保存在共享首选项中 我知道如何使用单个键和值创建共享的pref对象。我要找的是一个共享的pref obj,只有一个键和3个值 真的有可能吗?如果是,您可以告诉我一些方向。您不能用一个键在同一个文件中存储三个值,至少不能在android共享首选项一键多值,android,sharedpreferences,Android,Sharedpreferences,我的查询是直截了当的,在谷歌上找不到答案: 例如: 存储库1->username1 ->密码1 存储库2->username2 ->密码2 存储库3->username3 ->密码3 如上所述,我有一个包含三个存储库的对话框。当用户自动选择存储库时,会弹出另一个对话框,输入用户名和密码 所以,我试图实现的是用一个键将存储库名称、用户名和密码保存在共享首选项中 我知道如何使用单个键和值创建共享的pref对象。我要找的是一个共享的pref obj,只有一个键和3个值 真的有可能吗?如果是,您可以告诉
SharedReferences
对象的抽象级别上存储
您可以做的是存储n3元组的JSON表示(我认为这是您所需要的)。换句话说,存储一个由s组成的字符串。这样,您就不必关心分隔符、转义和其他此类麻烦。我将使用String对象的split方法。。。
SharedPreferences prefs = getSharedPreferences(getPathForUser(username, password) + PREF_RESOURCES_NAME, MODE_PRIVATE);
public static String getPathForUser(String username, String password) {
String sUsername = null;
String sPassword = null;
// sUsername
if (username != null && username.trim().length() > 0) {
sUsername = username.trim();
} else {
sUsername = "defaultUsername";
}
// sPassword
if (password != null && password.trim().length() > 0) {
sPassword = password.trim();
} else {
sPassword = "defaultPassword";
}
try {
return URLEncoder.encode(sUsername, "UTF-8") + "__" + URLEncoder.encode(sPassword, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return "";
}
}