gpt4 book ai didi

android - 在运行时为 GUI PreferenceActivity 设置默认值

转载 作者:行者123 更新时间:2023-11-29 22:05:42 25 4
gpt4 key购买 nike

我有以下 XML。

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="@string/preference_xxx_category">
<CheckBoxPreference
android:title="@string/preference_xxx_dual_mode_title"
android:summary="@string/preference_xxx_dual_mode_summary"
android:key="xxxDualModePreference" />
</PreferenceCategory>
</PreferenceScreen>

我使用 GUI 将其加载为以下代码

public class Preferences extends SherlockPreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

addPreferencesFromResource(R.xml.preferences);

this.getPreferenceManager().findPreference("xxxDualModePreference").setDefaultValue(Utils.isDualCoreDevice());
this.getPreferenceManager().findPreference("xxxDualModePreference").setEnabled(Utils.isDualCoreDevice());

// Once the GUI is shown, I realize my preference UI check box is not being ticked.

默认值应取决于设备 CPU 内核的数量。这就是我无法在 XML 中指定默认值的原因。

但是,如果我在 Java 代码中指定默认值,我意识到 UI 没有反射(reflect)它,尽管这是我第一次启动我的应用程序。

我是否遗漏了任何其他步骤?

谢谢。

最佳答案

我认为您没有完全理解我在评论中想表达的意思,所以我将在下面举一个例子。正如已经指出的那样:调用 setDefaultValue(...) 实际上不会刷新/无效/更新 Preference

您真正想要的(至少我认为...)不仅要设置“已启用”状态,还要设置“已检查”状态。基本上,您想从首选项中获取该首选项的值,否则使用 Utils.isDualCoreDevice() 的结果。这看起来有点像这样:

CheckBoxPreference dualCoreModePref = (CheckBoxPreference) getPreferenceManager().findPreference("xxxDualModePreference");
dualCoreModePref.setEnabled(Utils.isDualCoreDevice());
dualCoreModePref.setChecked(getPreferenceManager().getSharedPreferences().getBoolean(dualCoreModePref.getKey(), Utils.isDualCoreDevice()));

魔术在最后一行:检索首选项的值并将实用程序方法的结果用作默认值。初始启动后,或者如果用户更改设置, bool 值将添加到首选项中,因此将不再使用默认值。

剩下的就是您自己决定是否要在设备是单核设备时显示复选标记。目前会。

关于android - 在运行时为 GUI PreferenceActivity 设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10812267/

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