我正在尝试创建一个用户特定的sharedPreference。我想存储的所有内容都是布局背景,具体取决于设置菜单中的内容。如何根据所使用的帐户存储和加载sharedPrefence?如何创建用户特定的SharedPreference?
回答
您可以添加一个包含用户信息的值字段吗?然后你会搜索用户名,并检查它的孩子是否有相应的信息。您可能必须将信息存储为对象。
如果您使用共享首选项,它应该只包含少量的键值对。由于您使用的是本地数据库,因此建议您将值存储在那里。你可以为你想存储的每种类型的信息设置一个表格,比如High Scores。您需要一个“USERID”字段,以便在您对数据库执行搜索时,可以使用where
子句指定要搜索的USERID。一旦您搜索了用户的信息,您就可以将其存储到共享首选项中,以便更轻松地使用并且只有少量数据,而不是每个人的数据。一旦你完成了使用这些信息,你将把信息保存回数据库。
我正在使用数据库作为帐户。即时通讯新的Android开发,并没有发现任何可以理解的如何正确地做一个sharedPrefence,所以我不知道如何链接这两个 – Chanter
如果你使用的数据库,那么你不能存储任何共享首选项在那里?共享首选项用于在本地存储少量的键值对。我发现这个链接很好地描述了它,并告诉你如何读/写。 https://developer.android.com/training/basics/data-storage/shared-preferences.html查看我的编辑了解更多详情。 – Developer
感谢您的帮助:)非常感谢队友 – Chanter
您可以将您的用户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;
}
在这些方法中传递密钥中的用户标识和对象中的详细信息。它会工作。
您可以做到这一点。您必须转换为GSON等格式才能将对象存储到SharedPrefs中。 –
为了获取对象,你可以传递null。 – Shivam
定义该帐户唯一的密钥?即使用用户名作为标识符 –
define Account ... – Selvin
这听起来像是一个最好通过使用SQLite解决的问题。 –