[Android] プリファレンス(Preferences)をリセットする

| トラックバック(1) |

元ネタは、以下のサイトから。

 

Preferenceをリセットする - 明日の鍵

http://d.hatena.ne.jp/tomorrowkey/20100721/1279700859

 

プリファレンスを使用するアプリケーションを作成していると、テスト用に、プリファレンスデータをリセットしたくなります。

実際、ワタクシも、毎回アプリケーションをアンインストールしていた人です。。。

 

そこで、プリファレンスをリセット(というより削除)するには、上記エントリのようにすれば、目的を達成できます。

ありがたいですね。

 

で、自分でもプリファレンスデータをリセットする方法を考えてみました。

ちょっと真面目すぎるコードですが、"/data/data"~"/shared_prefs/"の部分をハードコードしてない点がポイントです。

 

プリファレンスをリセット(削除のみ)するソースコード(※1) 

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPreferences.edit();
Map<String, ?> keys = sharedPreferences.getAll();
if (keys.size() > 0) {
    for (String key : keys.keySet()) {
        editor.remove(key);
    }
    editor.commit();
}

 

あと、プリファレンスがデフォルト値を持っていない場合には、これでも良いのですが、

デフォルト値を持っている場合には、続けて、明示的にデフォルト値を作成してあげる必要があります。

※ちなみに、デフォルト値を書き出したかどうかは、/data/data/パッケージ名/shared_prefs/_has_set_default_values.xml の _has_set_default_values キー値に保存されています

 

明示的にデフォルト値を書き出すソースコード

PreferenceManager.setDefaultValues(this, R.xml.preference, true);

 

お題が与えられて一緒に考えるのは楽しいし、勉強になりますね。

 

※1:2010年7月22日追記

SharedPreferences.Editor#clear()→commit() で簡単に削除できるようです^^;

http://d.hatena.ne.jp/ytRino/20100722/1279762434

関連記事

トラックバック(1)

トラックバックURL: http://mt.adakoda.com/mt-tb.cgi/471

さっそくですが 開発中にPreferenceをリセットしたい時は、今まではアプリの再インストールしていました。 それでもめんどうなので、アプリにデバッグ... 続きを読む

Android Advent Calendar 2011

2012年2月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29