package jp.mixi.sample.preference; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.preference.EditTextPreference; import android.preference.PreferenceActivity; import android.view.Menu; /** * 設定変更時のコールバックサンプルです。 */ public class SettingsActivity3 extends PreferenceActivity implements OnSharedPreferenceChangeListener { // EditTextPreference で使用しているkey private static final String EDIT_TEXT_KEY = "edit_texit_key"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { // 処理対象のPreferenceかをkeyで判定 if (key.equals(EDIT_TEXT_KEY)) { // keyからPreferenceのインスタンスを取得 EditTextPreference editPref = (EditTextPreference) findPreference(EDIT_TEXT_KEY); // Preferenceのサマリーを変更 editPref.setSummary(editPref.getText()); } } @Override protected void onResume() { super.onResume(); // リスナーを登録 getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); } @Override protected void onPause() { super.onPause(); // リスナーを登録解除 getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener( this); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }