我正在尝试使用复选框控件创建首选项屏幕。
<CheckBoxPreference android:summaryOn="@string/mySummaryOn"
android:summaryOff="@string/mySummaryOff"
android:key="myCB"
android:title="my checkbox"/>
我想在它发生变化时获取这个 bool 值。
在我的应用程序中,我已按如下方式实现 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
:
将以下行添加到您的首选项 Activity 的 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;
}
};
关于android - 当 CheckBoxPreference 更改时获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8027467/