2017-04-12 83 views
-1

我正在尝试创建一个用户特定的sharedPreference。我想存储的所有内容都是布局背景,具体取决于设置菜单中的内容。如何根据所使用的帐户存储和加载sharedPrefence?如何创建用户特定的SharedPreference?

+0

定义该帐户唯一的密钥?即使用用户名作为标识符 –

+0

define Account ... – Selvin

+0

这听起来像是一个最好通过使用SQLite解决的问题。 –

回答

0

您可以添加一个包含用户信息的值字段吗?然后你会搜索用户名,并检查它的孩子是否有相应的信息。您可能必须将信息存储为对象。

如果您使用共享首选项,它应该只包含少量的键值对。由于您使用的是本地数据库,因此建议您将值存储在那里。你可以为你想存储的每种类型的信息设置一个表格,比如High Scores。您需要一个“USERID”字段,以便在您对数据库执行搜索时,可以使用where子句指定要搜索的USERID。一旦您搜索了用户的信息,您就可以将其存储到共享首选项中,以便更轻松地使用并且只有少量数据,而不是每个人的数据。一旦你完成了使用这些信息,你将把信息保存回数据库。

+0

我正在使用数据库作为帐户。即时通讯新的Android开发,并没有发现任何可以理解的如何正确地做一个sharedPrefence,所以我不知道如何链接这两个 – Chanter

+0

如果你使用的数据库,那么你不能存储任何共享首选项在那里?共享首选项用于在本地存储少量的键值对。我发现这个链接很好地描述了它,并告诉你如何读/写。 https://developer.android.com/training/basics/data-storage/shared-preferences.html查看我的编辑了解更多详情。 – Developer

+0

感谢您的帮助:)非常感谢队友 – Chanter

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; 
    } 

在这些方法中传递密钥中的用户标识和对象中的详细信息。它会工作。

+0

您可以做到这一点。您必须转换为GSON等格式才能将对象存储到SharedPrefs中。 –

+0

为了获取对象,你可以传递null。 – Shivam