用SharedPreferences保存复选框,java。

问题描述 投票:0回答:1

我需要在android studio中为我的应用程序中的一个设置选项卡保存一个复选框的值,以改变灵敏度,但我想不通为什么我的SharedPreferences不能工作,我想我会尝试将复选框覆盖到一个布尔值,但这似乎不能保存我的数据。

代码:我需要保存一个复选框的值,但这似乎无法保存我的数据。

private CheckBox checkSens;
private boolean cbValue;
private static boolean finalSens;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_settings);

    finalSens = LoadPrefs();

    checkSens = (CheckBox) findViewById(R.id.checkSens);
    checkSens.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {
            savePrefs("CheckBox", isChecked);
        }
    });

    checkSens = (CheckBox) findViewById(R.id.checkSens);
}

public static boolean getCheckSens() {
    return finalSens;
}

private boolean LoadPrefs()
{
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
    cbValue = sp.getBoolean("CheckBox", false);

    return cbValue;
}

private void savePrefs(String key, boolean value)
{
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences.Editor edit = sp.edit();
    edit.putBoolean("CheckBox", value);
    edit.commit();
}
java android-studio sharedpreferences
1个回答
0
投票

请使用setOnCheckedChangeListenerinstead而不是setOnClickListener来获取复选框的值。请参考下面的代码。

checkSens = (CheckBox) findViewById(R.id.checkSens);
checkSens .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompundButton button, boolean isChecked)
    {

       savePrefs("CheckBox", isChecked);
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.