設定の変更の検出
基本的に設定を変えたらリアルタイムで処理するため
変更したら検出できるようにする必要がある
設定の変更を検出するには
変更を検出したいPreferenceへ
registerOnSharedPreferenceChangeListener
を設定すると変更を検出できる
registerOnSharedPreferenceChangeListener
を実装するには
まずクラスへ
1 | extends PreferenceFragment implements OnSharedPreferenceChangeListener |
を追記
そして、onCreate()の中で、設定画面のリソースファイルを読み込む
1 | addPreferencesFromResource(R.xml.pref); |
そして
onResume()
inPause()にもリスナーを追記する
1 2 3 4 5 6 7 8 9 10 11 | @Override public void onResume(){ super .onResume(); getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener( this ); } @Override public void onPause(){ super .onPause(); getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener( this ); } |
さらに変更を検知したときの動作を実装
1 2 3 4 5 6 7 8 9 | @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(); } } |
今回はトーストで時間を表示している