現在作成中のアプリでは、PreferenceActivityを利用しています。
設定した値によって、表示されている項目のサマリーが変更するとステキなので、実装をします。
こういう感じで、設定項目の下に設定値を表示したい。 |
リスナーの設定を
onResume()
で行い、解除を
onPause()
で行なっています。
SharedPreferences.OnSharedPreferenceChangeListener listener; //設定値変更時のリスナーを保存するField public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.preference_activity); addPreferencesFromResource(R.xml.party_preference); //省略 listener = setOnChangeLitener(); } //設定値変更時のリスナークラスの定義 private SharedPreferences.OnSharedPreferenceChangeListener setOnChangeLitener() { return new SharedPreferences.OnSharedPreferenceChangeListener() { @Override //コールバックメソッド public void onSharedPreferenceChanged( SharedPreferences sharedPreferences, String key) { // TODO Auto-generated method stub Log.d(TAG, "value is changed"); //全てのPreferenceに実行する findPreference(key).setSummary( sharedPreferences.getString(key, "")); //特定のキーの場合のみ、実行する if(key.equals(SEARCHBOOKS_KEY)) searchbooksPref.setSummary( searchbooksMap.get(sharedPreferences.getString(key, ""))); } } }; } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); //登録 getPreferenceScreen().getSharedPreferences() .unregisterOnSharedPreferenceChangeListener(listener); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); //消去 getPreferenceScreen().getSharedPreferences() .registerOnSharedPreferenceChangeListener(listener); }
0 件のコメント:
コメントを投稿