AndroidのPreferenceを簡単に使いたい
AndroidでPreference関係の処理書くのすごーく面倒なんですよねー。
もう面倒すぎて鼻血でそうな感じですよね。
なので、うまいこと使える部品使って使い回したいなーっと。
そういうことで最近はこんな感じのコード書いてます。
public class Preferences { private static SharedPreferences prefs; private static Resources res; public static void create(Context context) { if (null == prefs || null == res) { prefs = PreferenceManager.getDefaultSharedPreferences(context); res = context.getResources(); } } public static String getHoge() { return get(R.string.pref_key_hoge, getString(R.string.pref_defval_hoge)); } private static String getString(int id) { return res.getString(id); } @SuppressWarnings("unchecked") private static <T> T get(int id, T defVal) { final Map<String, ?> map = prefs.getAll(); final String key = getString(id); if (!map.containsKey(key)) { return defVal; } return (T)map.get(key); } }
Preferences#createをActivityのonCreateとかonStartとかonResumeとかで適宜呼び出します。
(AndroidのSingletonはアプリケーションのlife cycleにあわせて自動的にunloadされる可能性があるので気をつけてくださいね☆)
内部で設定項目を取得するのは"
デフォルト値やキーは基本的にリソースに追い出して使う前提なので、
"String getString(int id)"でリソースから文字列を取得できるようにしています。
こんな感じのラッパーを書いておけば設定項目へのアクセスが楽になるかなーと思います。