【发布时间】:2015-08-10 15:48:22
【问题描述】:
当应用程序转到 onStop() 时,我正在尝试保存 ColorBean 类的对象
public class MainActivity extends ExpandableListActivity {
private ColorAdapter expListAdapter;
LinkedHashMap<String, ArrayList<ColorBean>> colorsMap2 = new LinkedHashMap<String, ArrayList<ColorBean>>();
SharedPreferences prefs;
static String fileName = "SharedObject";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
ArrayList<String> groupNames = new ArrayList<String>();
prefs = getPreferences(MODE_PRIVATE);
final LinkedHashMap<String, ArrayList<ColorBean>> colorsMap = new LinkedHashMap<String, ArrayList<ColorBean>>();
ArrayList<ColorBean> color = new ArrayList<ColorBean>();
//Trying to fetch the prefs
colorsMap2 = (LinkedHashMap<String, ArrayList<ColorBean>>) loadFromSharedPrefs();
if (colorsMap2 == null || colorsMap2.size() == 0)
Toast.makeText(this, "Not Retrieved", Toast.LENGTH_SHORT).show();
}
@Override
protected void onResume() {
super.onResume();
//fetching them here too
if (loadFromSharedPrefs() != null) {
colorsMap2 = (LinkedHashMap<String, ArrayList<ColorBean>>) loadFromSharedPrefs();
}
}
@Override
protected void onStop() {
super.onStop();
//saving the preferences
saveToSharedPrefs(colorsMap2);
}
public void saveToSharedPrefs(Object objToSave) {
SharedPreferences.Editor editor = prefs.edit();
Gson gson = new Gson();
String json = gson.toJson(objToSave);
editor.putString("MyObject", json);
editor.commit();
}
public Object loadFromSharedPrefs() {
Toast.makeText(this, "loading", Toast.LENGTH_SHORT).show();
Gson gson = new Gson();
Object obj = null;
if (prefs != null) {
String json = prefs.getString("MyObject", "");
obj = gson.fromJson(json, Object.class);
}
return obj;
}
}
【问题讨论】:
-
请完整而准确地解释这里的“不工作”是什么意思。
-
每当我杀死并重新启动应用程序时,obj = gson.fromJson(json, Object.class);返回空值。
-
检查首选项!= null?
-
第一次启动应用时,可能会出现空指针异常:String json = prefs.getString("MyObject", "");
-
我试过 Type mapType = new TypeToken
>>(){}.getType();但这无济于事。
标签: java android json gson sharedpreferences