[Android UI] ListPreference 动态改变Summary

来源:互联网 发布:大胸内衣知乎 编辑:程序博客网 时间:2024/06/05 10:36
首先该类实现OnSharedPreferenceChangeListener 接口

onCreate方法中进行注册
 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
 prefs.registerOnSharedPreferenceChangeListener(this);

重写onSharedPreferenceChanged 方法
  1.  public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {  
  2.         // Let's do something a preference value changes  
  3. if (key.equals(KEY_LIST_PREFERENCE)) {  
  4.           mListPreference.setSummary("Current value is " + sharedPreferences.getValue(key, ""));   
  5.         }  
  6. }  



以下是我的代码,我没时间整理代码,大家将就的看吧,有问题提问。我想我应该说清楚流程了."color"为listpreference的key
package com.h3c.AndVNC;import android.content.SharedPreferences;import android.content.SharedPreferences.OnSharedPreferenceChangeListener;import android.os.Bundle;import android.preference.EditTextPreference;import android.preference.ListPreference;import android.preference.Preference;import android.preference.PreferenceActivity;import android.preference.PreferenceManager;import android.preference.Preference.OnPreferenceChangeListener;import android.preference.Preference.OnPreferenceClickListener;import android.widget.Toast;public class SettingPage extends PreferenceActivity implements OnPreferenceChangeListener,   OnPreferenceClickListener,OnSharedPreferenceChangeListener {ListPreference lp;EditTextPreference et;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);addPreferencesFromResource(R.xml.preferences);lp = (ListPreference)findPreference("color");et = (EditTextPreference)findPreference("repeater");lp.setSummary(lp.getEntry());et.setSummary(et.getText());SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);        prefs.registerOnSharedPreferenceChangeListener(this); //lp.setOnPreferenceChangeListener(this);//lp.setOnPreferenceClickListener(this);}@Overridepublic boolean onPreferenceChange(Preference preference, Object newValue) {// TODO Auto-generated method stubif(preference.getKey().equals("color"))          { Toast.makeText(SettingPage.this,"s"+lp.getEntry(), Toast.LENGTH_SHORT).show();//lp.setSummary(lp.getEntry());        }return true;}@Overridepublic boolean onPreferenceClick(Preference preference) {// TODO Auto-generated method stubif(preference.getKey().equals("color"))          { //lp.setSummary(lp.getEntry());Toast.makeText(SettingPage.this,lp.getEntry(), Toast.LENGTH_SHORT).show();        }return false;}@Overridepublic void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {// TODO Auto-generated method stubif(key.equals("color")){lp.setSummary(lp.getEntry());}if(key.equals("repeater")){et.setSummary(et.getText());}} }



原创粉丝点击