以下の通りです。
ConfigFragment.java
public class ConfigFragment extends PreferenceFragment{
//private ListView lv;
public static ConfigFragment newInstance() {
return new ConfigFragment();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref);
}
@Override
public void onResume() {
super.onResume();
reloadSummary();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(listener);
}
@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(listener);
}
private void reloadSummary(){
ListAdapter adapter = getPreferenceScreen().getRootAdapter();
for (int i=0;i<adapter.getCount();i++){
Object item = adapter.getItem(i);
if (item instanceof ListPreference){
ListPreference preference = (ListPreference) item;
preference.setSummary(preference.getEntry() == null ? "" : preference.getEntry());
}
}
}
private SharedPreferences.OnSharedPreferenceChangeListener listener =
new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
reloadSummary();
}
};
}
重要なのはreloadSummary()
となります。
ここでPreferenceFragmentのアダプターを引っ張ってきてSummaryに反映しています。