我在stackoverflow(LINK,LINK)和其他websites中看到了类似的问题。他们正在从一项活动中做所有事情,因此他们没有遇到问题。
我有一个Activity和Fragment类。我正在尝试从片段将对象的
SharedPreferences prefs = getActivity().getSharedPreferences("SHARED_PREFS_FILE", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
try {
editor.putString("taggedFriends",ObjectSerializer.serialize(taggableFriends));
} catch (IOException e) {
e.printStackTrace();
在 ObjectSerializer
显示错误**Cannot resolve symbom 'ObjectSerializer'**
我试过
getActivity.ObjectSerializer.serialize(..);
但错误没有发生。帮助我现在能做什么。
谢谢你花时间陪我。
答案 0 :(得分:1)
试试这个:
上次修改:
在这种情况下:
static class YourObject
{
private String _name;
public YourObject(String name)
{
this._name = name;
}
}
YourObject yourObject = new YourObject(myName);
ArrayList<YourObject> foo = new ArrayList<YourObject>();
foo.add(yourObject);
将ArrayList转换为JSONArray:
JSONArray mJSONArray = new JSONArray(foo);
然后保存JSONArray:
SharedPreferences.Editor editor = prefs.edit();
editor.putString("yourStringName", mJSONArray.toString());
JSONArray的字符串:
SharedPreferences prefs = getSharedPreferences("SHARED_PREFS_FILE", Context.MODE_PRIVATE);
String myJSONArrayString = prefs.getString("yourStringName", "");
JSONArray jsonArray = new JSONArray(myJSONArrayString);
JSONArray to ArrayList:
ArrayList<String> list = new ArrayList<String>();
for (int i=0;i<jsonArray.length();i++){
list.add(jsonArray.get(i).toString());
}
我希望这可以解决你的问题。
答案 1 :(得分:1)
首先将Gson添加到您的gradle中:
compile 'com.google.code.gson:gson:2.2.4'
将您的列表转换为Json String,如下所示:
List<String> foo = new ArrayList<String>();
foo.add("Item1");
foo.add("Item2");
foo.add("Item3");
String json = new Gson().toJson(foo );
并将其保存到共享的pref,如下所示:
SharedPreferences.Editor mEditor = mPrefs.edit();
mEditor.putString("yourKey", json);
当你想使用从pref:
读取你保存的json字符串String json = mPrefs.getString("yourKey", "");
将您的Json String转换为您的对象列表,如下所示。在示例中,我使用了String。
ArrayList<String> foo = (ArrayList<String>) new Gson().fromJson(json,
new TypeToken<ArrayList<String>>() {
}.getType());