- Android
- 2012-05-16 - 更新:2012-05-17
この記事は最終更新日から1年以上経過しています。
例としてEditTextPreferenceの設定がされていればSummaryに表示するようにします。
リスナーをimplementsする場合
public class Setting extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref); PreferenceScreen ps = getPreferenceScreen(); EditTextPreference ep = (EditTextPreference)ps.findPreference("key"); if(ep.getText() != null && !ep.getText().equals("")) ep.setSummary(ep.getText()); } @Override protected void onResume() { super.onResume(); getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); } @Override protected void onPause() { super.onPause(); getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); } public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if(key.equals("key")) { PreferenceScreen ps = getPreferenceScreen(); EditTextPreference ep = (EditTextPreference)ps.findPreference("key"); if(ep.getText() != null && !ep.getText().equals("")) { ep.setSummary(ep.getText()); } else { ep.setSummary("デフォルトのSummary"); } } } }
リスナーをimplementsしない場合
public class Setting extends PreferenceActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref); PreferenceScreen ps = getPreferenceScreen(); EditTextPreference ep = (EditTextPreference)ps.findPreference("key"); if(ep.getText() != null && !ep.getText().equals("")) ep.setSummary(ep.getText()); } @Override protected void onResume() { super.onResume(); getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(listener); } @Override protected void onPause() { super.onPause(); getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(listener); } private SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() { public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if(key.equals("key")) { PreferenceScreen ps = getPreferenceScreen(); EditTextPreference ep = (EditTextPreference)ps.findPreference("key"); if(ep.getText() != null && !ep.getText().equals("")) { ep.setSummary(ep.getText()); } else { ep.setSummary("デフォルトのSummary"); } } } }; }
4,271 views