我正在尝试使用复选框控件创建首选项屏幕。
<CheckBoxPreference android:summaryOn="@string/mySummaryOn"
android:summaryOff="@string/mySummaryOff"
android:key="myCB"
android:title="my checkbox"/>
我想在更改布尔值时获取它。
在我的应用程序中,我完成了以下实现OnSharedPreferenceChangeListener的操作
public boolean cbValue;
@Override
public void onCreate() {
// The following line triggers the initialization of ACRA
ACRA.init(this);
prefs=PreferenceManager.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(this);
super.onCreate();
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
// TODO Auto-generated method stub
//FacebookStatus=prefs.getBoolean("myCB", true);
Toast.makeText(getBaseContext(), "Shared Preference Changes ",Toast.LENGTH_LONG ).show();
}
即使我在偏好屏幕中切换复选框时,也根本不会调用onSharedPreferenceChanged方法。
如果每次更改值时都需要从“共享”偏好中获取价值,我应该怎么做?
最佳答案
代替使用OnSharedPreferenceChangeListener
:
将以下行添加到您的首选项活动的onCreate
方法中:Preference myCheckbox = findPreference("myCB")
然后将侦听器应用于myCheckbox
对象:myCheckbox.setOnPreferenceChangeListener(myCheckboxListener)
侦听器的代码(作为类字段):
private OnPreferenceChangeListener myCheckboxListener = new OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
// Read new value from Object newValue here
return true;
}
};