[CheckBoxPreference更改时获取值

问题描述 投票:2回答:3

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

 <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方法根本不被调用,即使我切换了首选屏幕中的复选框。

如果每次更改值时都需要从共享首选项中获取价值,我应该怎么做?

android sharedpreferences
3个回答
2
投票

代替使用OnSharedPreferenceChangeListener


0
投票

您可以直接使用SharedPreferences参数对象读取新值。如果您知道密钥来自CheckBoxPreference,则可以读取值:


0
投票
SwitchPreference switchPref = (SwitchPreference)findPreference("switchPref");
switchPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        boolean beforeChange = ((SwitchPreference) preference).isChecked();
        boolean afterChange = !beforeChange;
        ((SwitchPreference) preference).setChecked(afterChange);
        // Toast.makeText(getContext(), ""+afterChange, Toast.LENGTH_SHORT).show();
        return false;
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.