使用PreferenceActivity時,如何獲取ListPreference中選中的值
汗~~~研究了一天,貌似ListPreference中根本就沒有什麼回調函數可以用
於是,向上一層,把注意力集中於SharedPreferences,
發現有這麼個接口:onSharedPreferenceChanged
抱著試試看的態度,實現了該接口,發現此方法可行,先將部分代碼分享如下:
package yinger.firewall;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
public class CallFireWall extends PreferenceActivity implements
OnSharedPreferenceChangeListener {
ListPreference lp = null;
String whiteMode = "1";
String blackMode = "2";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
this.setTitle("Ying_er" + " Call Safe");
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(this);
lp = (ListPreference) findPreference(getString(R.string.pref_mode_key));
}
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
Preference preference) {
// TODO Auto-generated method stub
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
// TODO Auto-generated method stub
System.out.println("onSharedPreferenceChanged");
if (key == getString(R.string.pref_mode_key)){
System.out.println(lp.getValue());
if(lp.getValue().equals(whiteMode)){
}
}
}
}
注意:該事件需要注冊。既:
prefs.registerOnSharedPreferenceChangeListener(this);
最後更新:2017-04-02 06:51:45