1

我有自己的对象,需要存储以备后用。用户保存此对象,将其转换为 JSON 字符串,然后当用户连接到网络时,将 JSON 字符串转换回对象,对其执行操作。

我的问题是,在运行时,我怎么知道如何存储对象?

IE

Gson gson= new Gson();
String pointOfInterest = gson.toJson(point);
SharedPreferences.Editor sharedprefEditor = application_shared_preferences.edit();
sharedprefEditor.putString(?KEY?,pointOfInterest);

我可以使用什么来获取 KEY 的值?如果我使用索引,每次打开或关闭应用程序时它都会重置,这将替换我的对象。

编辑 对不起,我没有说得足够清楚,上面代码所在的方法可以运行任意次数,并且可以存储多个pointsOfInterest。

4

2 回答 2

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,""));

请再解释一下您的问题,我认为那里没有困难/

于 2013-01-31T23:18:54.687 回答
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, "" );
于 2013-01-31T23:20:00.450 回答