1

後で使用するために保存する必要がある独自のオブジェクトがあります。ユーザーがこのオブジェクトを保存すると、JSON 文字列に変換されます。ユーザーがネットワークに接続されると、JSON 文字列はオブジェクトに戻され、操作が実行されます。

私の問題は、実行時にオブジェクトを保存する方法をどのように知ることができるかということです。

すなわち

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

KEY の値には何を使用できますか? インデックスを使用すると、アプリを開いたり閉じたりするたびにインデックスがリセットされ、オブジェクトが置き換えられます。

編集 申し訳ありませんが、これを十分に明確にしませんでした。上記のコードが含まれているメソッドは、任意の回数実行でき、保存するpointOfInterestがいくつかある可能性があります。

4

2 に答える 2

1

まず第一に、インデックスを使用する場合、設定は永久に残ります:

例えば:

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

キーには好きな名前を付けることができますが、一貫性を持たせるだけです。それを行う1つの方法は、クラスで定数を作成することです。

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 に答える