SharedPreferences.OnSharedPreferenceChangeListener で Preference の変更を検知し、そこで渡された key から、
findPreference(key) で Preference を、sharedPreferences.getXXX(key, default_value) から値を取得する。setSummary(summary) などで表示を更新する。
public class SettingFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener{
public SettingFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.setting);
}
@Override
public void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
Preference p = findPreference("TEST_PREFERENCE_STRING_KEY");
String value = PreferenceManager.getDefaultSharedPreferences(getActivity()).getString("TEST_PREFERENCE_STRING_KEY", "default_value");
p.setSummary(value);
}
@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Log.i("onSharedPreferenceChanged", key);
if(key.equals("TEST_PREFERENCE_STRING_KEY")){
Preference p = findPreference(key);
String value = sharedPreferences.getString(key, "default_value");
p.setSummary(value);
}
}
}
スライドバーが見にくい
返信削除