設定の変更の検出
基本的に設定を変えたらリアルタイムで処理するため
変更したら検出できるようにする必要がある
設定の変更を検出するには
変更を検出したい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();
}
}
今回はトーストで時間を表示している