設定の変更の検出
基本的に設定を変えたらリアルタイムで処理するため
変更したら検出できるようにする必要がある
設定の変更を検出するには
変更を検出したいPreferenceへ
registerOnSharedPreferenceChangeListener
を設定すると変更を検出できる
registerOnSharedPreferenceChangeListener
を実装するには
まずクラスへ
extends PreferenceFragment implements OnSharedPreferenceChangeListener
を追記
そして、onCreate()の中で、設定画面のリソースファイルを読み込む
addPreferencesFromResource(R.xml.pref);
そして
onResume()
inPause()にもリスナーを追記する
@Override public void onResume(){ super.onResume(); getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); } @Override public void onPause(){ super.onPause(); getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); }
さらに変更を検知したときの動作を実装
@Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key){ if(PREF_CUSTOMIZE_DIALOG.equals(key)){ String date = sharedPreferences.getString(key,null); Toast.makeText(getActivity(), "選択した時間: "+date, Toast.LENGTH_SHORT).show(); } }
今回はトーストで時間を表示している