5

を削除しようとしていますがSharedPreferences、うまくいきません:size期待どおりに 0 に設定されていません。

SharedPreferences sp = context.getSharedPreferences(name, mode);
SharedPreferences.Editor e = sp.edit();
e.clear();
e.commit();
Map<String, ?> map = sp.getAll();
int size = map.size();

助言がありますか?

private static String name = "ABC_PREFS";
private static int mode = Context.MODE_PRIVATE;
4

3 に答える 3

2

あなたのコードは、それを読むとうまく見えます。コンテキスト変数が正しく初期化されていますか? 他の SharedPreferences 変数はおそらく同じファイルを指していますか?

これらが問題でない場合は、最小限のサンプル アプリを取得し、このコードを貼り付けて、それでも失敗するかどうかを確認してください。このような問題は、コード スニペットだけで解決するよりも、完全なアプリで解決する方が簡単です。

于 2012-11-26T09:03:19.560 に答える
0

SharedPreferences.Editor.clear()は、設定の値のみを削除しますが、それだけでは不十分ですか?SharedPreferences.Editor.remove()を使用してすべてのエントリを削除できます。

    for (String key: sp.getAll().keySet()) {
        e.remove(key);
    }
    e.commit();
于 2012-12-01T22:00:35.550 に答える
-3

マップのサイズを共有設定に書き込むことができます:

e.clear();
e.putInt("size", map.size());
e.commit();

マップ呼び出しのサイズを取得するには:

int size = sp.getInt("size", 0);
于 2012-11-26T00:14:59.237 に答える