如何将对象的Arraylist从Fragment类保存到SharedPreferencess中

时间:2015-12-07 08:46:45

标签: android android-fragments sharedpreferences

我在stackoverflow(LINKLINK)和其他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(..);

但错误没有发生。帮助我现在能做什么。

谢谢你花时间陪我。

2 个答案:

答案 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());