設定の変更の検出

設定の変更の検出

基本的に設定を変えたらリアルタイムで処理するため
変更したら検出できるようにする必要がある

設定の変更を検出するには
変更を検出したい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();
}
}

今回はトーストで時間を表示している

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です