我正在尝试创建一个特定于用户的sharedPreference。我想要存储的是布局背景,具体取决于设置菜单中的内容。如何根据正在使用的帐户存储和加载sharedPrefence?
答案 0 :(得分:0)
您可以添加包含用户信息的值字段吗?然后,您将搜索用户名并检查其子项以获取相应信息。您可能必须将信息存储为对象。
如果您使用的是共享首选项,则只应包含少量键值对。由于您使用的是本地数据库,我建议您将值存储在那里。您可以为要存储的每种类型的信息创建一个表,比如High Scores。您需要一个“USERID”字段,以便在对数据库执行搜索时,可以使用where
子句指定要搜索的USERID。一旦搜索了用户的信息,您就可以将其存储到共享首选项中,以便更轻松地使用,并且只有少量数据而不是每个人的数据。完成信息使用后,您可以将信息保存回数据库。
答案 1 :(得分:0)
您可以将您的用户ID用作SharedPreference的键,然后将您的用户详细信息保存为其值中的对象。 通过这种方式,您可以在本地存储所有用户的用户数据。
/*Save the object in shared Preferences*/
public void saveObjectToPreferences(String key, Object value) {
final SharedPreferences prefs = getSharedPreferences(ApplicationConstants.PREF_FILE_CONFIG, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
String jsonValue = new Gson().toJson(value);
editor.putString(key, jsonValue);
editor.apply();
}
/*Get the object from shared Preferences*/
public Object getObjectFromPreferences(String key, Object defaultObj) {
final SharedPreferences prefs = getSharedPreferences(ApplicationConstants.PREF_FILE_CONFIG, Context.MODE_PRIVATE);
String value = prefs.getString(key, "");
Object object = new Gson().fromJson(value, defaultObj.getClass());
return object;
}
在密钥中传递用户ID,在这些方法中传递对象中的详细信息。它会起作用。