To update summary of ListPreference programmatically, call ListPreference.setSummary().
Display ListPreference selected item on summary |
Implement updateListPrefSummary_PREF_LIST() to update summary of ListPreference with key="PREF_LIST", call it in onCreate() in fragment start-up. And also implement OnSharedPreferenceChangeListener to call it when ListPreference with key="PREF_LIST" changed. Register and Unregister in onResume() and onPause().
package com.example.androidpreferencefragment; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.preference.ListPreference; import android.preference.PreferenceFragment; public class PrefFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); updateListPrefSummary_PREF_LIST(); } @Override public void onResume() { super.onResume(); getPreferenceScreen().getSharedPreferences() .registerOnSharedPreferenceChangeListener(this); } @Override public void onPause() { super.onPause(); getPreferenceScreen().getSharedPreferences() .unregisterOnSharedPreferenceChangeListener(this); } //Apply for ListPreference with key="PREF_LIST" private void updateListPrefSummary_PREF_LIST(){ ListPreference preference = (ListPreference)findPreference("PREF_LIST"); CharSequence entry = ((ListPreference) preference).getEntry(); preference.setSummary("current selection: " + entry); } @Override public void onSharedPreferenceChanged( SharedPreferences sharedPreferences, String key) { //if changed SharedPreference is ListPreference with key="PREF_LIST", // update summary if(key.equals("PREF_LIST")){ updateListPrefSummary_PREF_LIST(); }; } }
No comments:
Post a Comment