0

私は2つの文字列を共有設定に保存していますが、たまに何らかの理由でそれらが削除されます..これについてstackoverflowに他にもいくつか質問があることは知っていますが、それらのどれも私を助けませんでした..

共有設定に保存する方法に何か問題がありますか?

問題の原因を知っている人はいますか? 2 週間ほどで 2 回しか発生していないので、テストして、問題が解決したかどうかを確認できますか?

static void saveTitlePref(Context context, int mAppWidgetId, String text) {
    SharedPreferences.Editor editor = context.getSharedPreferences(PREFS_NAME, 0).edit();
    editor.putString(PREF_PREFIX_KEY + mAppWidgetId, text);
    editor.apply();
}

static void saveSizePref(Context context, int mAppWidgetId, String size) {
    SharedPreferences.Editor editor = context.getSharedPreferences(PREFS_NAME, 0).edit();
    editor.putString(PREF_SIZE_PREFIX_KEY, size);
    editor.apply();
}

私は次のようにそれらをロードします:

static String loadTitlePref(Context context, int mAppWidgetId) {

    SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
    String prefix = prefs.getString(PREF_PREFIX_KEY + mAppWidgetId, null);
    // If there is no preference saved, get the default from a resource
    if (prefix != null) {
        return prefix;
    } else {
        return context.getString(R.string.appwidget_prefix_default);
    }
}

static String loadSizePref(Context context, int mAppWidgetId) {

    SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
    String sizeprefix = prefs.getString(PREF_SIZE_PREFIX_KEY, null);
    // If there is no preference saved, get the default from a resource
    if (sizeprefix != null) {
        return sizeprefix;
    } else {
        return "24";
    }
}
4

3 に答える 3

0

あなたの場合の回答ではないかもしれませんが、同様の問題がありました。「消える」理由は、何らかの理由でString example = "notnull"以下を使用して比較できないためです。

example != null;

これにより、消えたように見えますが、消えていません。代わりにこれを呼び出す場合:

example.equals(null);

認識できるようになります。これが最初のものとは逆であることは知っていますが、あなたはそれを理解してください. これはあなたの場合の答えではないかもしれませんが、試してみるべきものです。

于 2012-11-30T20:18:15.670 に答える
0

私はちょうどに変更editor.apply();しましたeditor.commit();

于 2012-11-30T21:16:08.610 に答える
0

複数のプロセスを使用していますか、それとも単一のプロセスを使用していますか?

どの API レベルを使用していますか? API レベル 11 では、Google がデフォルト フラグを変更して、MODE_MULTI_PROCESS がデフォルトではなくなったことを知っています。ちょっとした考え。

于 2012-11-29T20:14:25.330 に答える