首先该类实现
OnSharedPreferenceChange Listener 接口
onCreate方法中进行注册
SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferen
ces(this);
prefs.
registerOnSharedPreferen ceChangeListener(this);
重写
onSharedPreferenceChange d 方法
- public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
- // Let's do something a preference value changes
- if (key.equals(KEY_LIST_PREFERENCE)) {
- mListPreference.setSummary("Current value is " + sharedPreferences.getValue(key, ""));
- }
- }
以下是我的代码,我没时间整理代码,大家将就的看吧,有问题提问。我想我应该说清楚流程了."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;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.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);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
// TODO Auto-generated method stub
if(preference.getKey().equals("color"))
{
Toast.makeText(SettingPage.this,"s"+lp.getEntry(), Toast.LENGTH_SHORT).show();
// lp.setSummary(lp.getEntry());
}
return true;
}
@Override
public boolean onPreferenceClick(Preference preference) {
// TODO Auto-generated method stub
if(preference.getKey().equals("color"))
{
// lp.setSummary(lp.getEntry());
Toast.makeText(SettingPage.this,lp.getEntry(), Toast.LENGTH_SHORT).show();
}
return false;
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// TODO Auto-generated method stub
if(key.equals("color")){
lp.setSummary(lp.getEntry());
}
if(key.equals("repeater")){
et.setSummary(et.getText());
}
}
}