gpt4 book ai didi

java - 代码中的 SwitchPreference 和 CheckBoxPreference

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:22:12 25 4
gpt4 key购买 nike

我现在正在为我的应用创建一个偏好页面

在 API-14 之后,switchpreference 可用。我想用它来替换 API14+ 设备上的复选框首选项

很容易使用res/xmlres/xml-14获取正确的xml资源

但是在编码部分,根据API切换preference并不是那么方便。

public class SettingActivity extends PreferenceActivity {
private CheckBoxPreference enable;
private SwitchPreference enablev14;

@Override
protected void onCreate(Bundle savedInstanceState) {
addPreferencesFromResource(R.xml.setting);
if (Build.VERSION.SDK_INT < 14)
enable = (CheckBoxPreference) findPreference(key_enable);
else
enablev14 = (SwitchPreference) findPreference(key_enable);
}
...
}

现在我的方法是用if-clause来检查Build.VERSION,并得到相应的对象来处理它。但是管理代码非常不方便和困难。有没有人有更聪明的方法来做到这一点?

最佳答案

也许你可以为你的 SwitchPreference 和 CheckBoxPreference xml 设置一个 android:key 属性,就像这样:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="pref_sync"
android:title="@string/pref_sync"
android:defaultValue="true" />
</PreferenceScreen>

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<SwitchPreference
android:key="pref_sync"
android:title="@string/pref_sync"
android:defaultValue="true" />
</PreferenceScreen>

然后您可以检查此键在您的代码中是否返回 true 或 false,如下所示:

public class SettingActivity extends PreferenceActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
addPreferencesFromResource(R.xml.setting);
PreferenceManager preferenceManager = getPreferenceManager();
if (preferenceManager.getSharedPreferences().getBoolean("pref_sync", true)){
// Your switch is on
} else {
// Your switch is off
}
...
}

希望这对你有用。

关于java - 代码中的 SwitchPreference 和 CheckBoxPreference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18414267/

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