読者です 読者をやめる 読者になる 読者になる

AndroidのPreferenceを簡単に使いたい

Android

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される可能性があるので気をつけてくださいね☆)

内部で設定項目を取得するのは" T get(int id, T defVal)"を呼び出します。
デフォルト値やキーは基本的にリソースに追い出して使う前提なので、
"String getString(int id)"でリソースから文字列を取得できるようにしています。

こんな感じのラッパーを書いておけば設定項目へのアクセスが楽になるかなーと思います。