我有自己的对象,我需要存储以供以后使用。用户保存此对象,将其转换为JSON字符串,然后当用户连接到网络时,将JSON字符串转回到对象上执行的操作。
我的问题是,在运行时,我如何知道如何存储对象?
即
Gson gson= new Gson();
String pointOfInterest = gson.toJson(point);
SharedPreferences.Editor sharedprefEditor = application_shared_preferences.edit();
sharedprefEditor.putString(?KEY?,pointOfInterest);
我可以将什么用于KEY的值?如果我使用索引,每次打开或关闭应用程序时它都会重置,这将取代我的对象。
修改 对不起,我没有说清楚,上面的代码所在的方法可以运行任意次数,并且可以存储几个pointOfInterest。
答案 0 :(得分:1)
首先,如果您使用索引,Preference将永远保留:
例如:
sharedprefEditor.putString("JSON569",pointOfInterest);
您还可以将索引保存在其他首选项中;例如,由列分隔:
sharedprefEditor.putString("indexes","569;789;852");
您可以轻松检查实例是否存在:
myPreference.getString("JSON789","").contentEquals("");
或者获取所有实例:
for (int anIndex:indexes)
Log.i("TAG","Current value: "+myPreference.getString("JSON"+anIndex,""));
请更多地解释一下你的问题,我认为没有困难/
答案 1 :(得分:0)
您可以根据需要为密钥命名,只需使其保持一致即可。一种方法是在课堂上为它做一个常数:
public class MyClass {
private static final String OBJECT_KEY = "myObjectKey";
...
然后当您保存对象时:
Gson gson= new Gson();
String pointOfInterest = gson.toJson(point);
SharedPreferences.Editor sharedprefEditor = application_shared_preferences.edit();
sharedprefEditor.putString(OBJECT_KEY,pointOfInterest);
加载时,只需使用OBJECT_KEY
从共享首选项中获取字符串:
String objectString = sharedPrefs.getString( OBJECT_KEY, "" );