将Class对象保存到SharedPreferences

时间:2014-12-10 23:42:37

标签: java android sharedpreferences

我需要在 SharedPreferences 中存储一个Class对象,以便能够在另一个活动中检索它。

以下是代码:

ForecastIO fio = new ForecastIO(apikey);
fio.setUnits(ForecastIO.UNITS_SI);
fio.setLang(ForecastIO.LANG_ENGLISH);
fio.getForecast(""+latif+"",""+longit+"");
FIOCurrently currently = new FIOCurrently(fio); 

如何在SharedPreferences中存储“当前”?

2 个答案:

答案 0 :(得分:1)

您无法在SharedPreferences中存储对象。就像塞尔文在评论中所说。你应该逐字段地做。

例如:如果ForecastIO.UNITS_SI等于int,您可以使用SharedPreferences轻松将其存储到SharedPreferences.Editor(请查看文档:{​​{3}}),并将其与其他变量。

但是,如果您想将信息传递给其他活动,我建议您使用Intent。然后你甚至可以将一个对象发送给另一个,但是该对象必须是可以分配的。看看这个stackoverflow问题:http://developer.android.com/reference/android/content/SharedPreferences.Editor.html

您想要的结果与他的正确答案和评论类似,为什么您不能在不实施parceable的情况下将对象传递给另一个活动。

答案 1 :(得分:0)

正如@kevto所说,这可能不是你应该做的,但如果由于某种原因你发现你必须在SharedPreferences中存储对象的状态,你可以使用,比如说,将它序列化为Json字符串。 GSon,然后存储字符串。