android - 当 CheckBoxPreference 更改时获取值

标签 android sharedpreferences

我正在尝试使用复选框控件创建首选项屏幕。

 <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/

相关文章:

android - 检查或不检查 "IsLibrary"?

java - 单击网站按钮时 Android WebView 停止工作

java - 在Android中通过sharedPreferences在类之间传递值

java - 为什么显示 "The method getPreferenceOnScreen is depriciated"?

android - 如何使用 SharedPreferences 保存多个值?

android - Android:JobScheduler有时会重用同一工作实例?

android - IntelliJ IDEA android scala 应用程序

android - GcmBroadcastReceiver 未在 Android 4.0.3 上触发

android - 共享首选项可以是私有(private)的吗?

java - 在共享首选项上打开第二个 Activity/错误时出错