1

私のアプリには、ユーザーが自分で作成したフラッシュカードオブジェクトがあります。ユーザーは必要な数のフラッシュカードを作成できますが、アプリを終了して戻ったときに、以前に作成したフラッシュカードを表示して削除できる必要があります。作成/削除できるように設定しましたが、アプリを終了するとすべて自動的に削除されます。フラッシュカードの情報を保存するための最良の方法は何ですか?現在、タイトル、表、裏の3つの文字列があります。

いくつか調べましたが、Android開発者サイトにある保存オプションに3つの文字列すべてを含める方法がわかりません。

たとえば、共有設定は、特定の設定しか保存できないように見えますが、ユーザーはそれらの設定を変更できます。内部/外部ストレージは、非常に異なりますが、同じ問題を引き起こします。オブジェクトの数を無制限にする方法、特に3つの文字列すべてを個別に保存する方法。

これは、以下に示す内部ストレージです。

String FILENAME = "hello_file"; 
String string = "hello world!";  
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
fos.write(string.getBytes()); 
fos.close();

複数のオブジェクトまたは3つの異なる文字列を保存する方法がわかりません。

誰かが私の問題の解決策を見ていますか?

4

1 に答える 1

1

SharedPreferences は、それを達成するための最も簡単な方法のように思えます。SharedPreferences メソッドを使用して何でも保存できるため、その使用方法を誤解しているか、名前を「設定」画面と混同していると思います (まあ、基本的なデータ型)。しつこく。

たとえば、アプリの JSON データを保存するために使用します (これは、JSONArray にユーザーのフラッシュカードを保存するという点で適切な方法かもしれません)。

/**
 * Retrieves data from sharedpreferences
 * @param c the application context
 * @param pref the preference to be retrieved
 * @return the stored JSON-formatted String containing the data 
 */
public static String getStoredJSONData(Context c, String pref) {
    if (c != null) {
        SharedPreferences sPrefs = c.getSharedPreferences("AppPreferences", Context.MODE_PRIVATE);
        return sPrefs.getString(pref, null);
    }
    return null;
}

/**
 * Stores the most recent data into sharedpreferences
 * @param c the application context
 * @param pref the preference to be stored
 * @param policyData the data to be stored
 */
public static void setStoredJSONData(Context c, String pref, String policyData) {
    if (c != null) {
        SharedPreferences sPrefs = c.getSharedPreferences("AppPreferences", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sPrefs.edit();
        editor.putString(pref, policyData);
        editor.commit();
    }
}

文字列「pref」は、その特定のデータを参照するために使用されるタグです。たとえば、「taylor.matt.data1」はデータを参照し、SharedPreferences から取得または保存するために使用できます。

于 2013-03-08T14:06:04.847 に答える