gpt4 book ai didi

java - 即使未选中,首选项复选框也保持不变

转载 作者:行者123 更新时间:2023-12-02 04:25:58 25 4
gpt4 key购买 nike

我有一个首选项 Activity ,其中有一个 PreferenceCheckBox。

我喜欢的 Activity :

package com.tjs.balr;

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class SettingsActivity extends PreferenceActivity{

@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource( R.xml.preferences);
}
}

我的复选框:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Audio">
<CheckBoxPreference
android:id="@+id/checkSound"
android:summary="Turn sounds on or off"
android:defaultValue="true"
android:title="Sounds"
android:key="soundPref"
/>
</PreferenceCategory>
</PreferenceScreen>

在我的主要 Activity 中,我尝试使用以下方法获取复选框的值:

private void showUserSettings() {
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
musicPlaying = sharedPrefs.getBoolean("checkSound", true);

if(musicPlaying){
Toast.makeText(this, "music is turned on", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this, "music is turned off ", Toast.LENGTH_SHORT).show();
}
}

stackoverflow 上的很多人都将 musicPlaying = sharePrefs.getBoolean("checkSound", true); 描述为获取复选框值的方法,但就我而言,它仍然是 true。主要是因为我说checkSound的默认值是true。为了更改 PreferenceCheckBox 的值,我是否忘记了某些内容?根据我对 PreferenceActivity 的理解,所有数据都会自动保存,这是正确的吗?

最佳答案

getBoolean(key, defaultValue) 中,您需要传递 Key 而不是 id。

你总是得到true,因为他找不到以checkSound为键的CheckBox,因此它返回默认值(true 在你的情况下)。

要解决这个问题,只需更改

musicPlaying = sharedPrefs.getBoolean("checkSound", true);

musicPlaying = sharedPrefs.getBoolean("soundPref", true);

关于java - 即使未选中,首选项复选框也保持不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32160811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com