gpt4 book ai didi

android - SwitchPreference 以编程方式创建,setChecked 不起作用

转载 作者:行者123 更新时间:2023-11-30 00:38:37 32 4
gpt4 key购买 nike

我要

  1. 以编程方式创建一个SwitchPreference
  2. 对其设置setChecked(true)
  3. 将其添加到 PreferenceGroup

1 和 3 工作正常,但在 3 之后 SwitchPreference 未被选中并且点击切换没有效果(无法“打开”/选中)。

这是我的 PreferenceFragment:

public class MyPrefFragment extends PreferenceFragment {
@Override
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {

addPreferencesFromResource(R.xml.prefs);

PreferenceGroup preferenceGroup = (PreferenceGroup) findPreference("pref_cat_1");

SwitchPreference switchPreference = new SwitchPreference(getActivity());
switchPreference.setTitle("new");
switchPreference.setChecked(true);
switchPreference.setDefaultValue(true);

switchPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(final Preference preference, final Object newValue) {

Toast.makeText(getActivity(), newValue.toString(), Toast.LENGTH_SHORT).show();

return false;
}
});

preferenceGroup.addPreference(switchPreference);

}
}

和我的PreferenceScreen:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

<PreferenceCategory android:title="cat_one">

<SwitchPreference
android:key="pref_1"
android:defaultValue="false"
android:title="fest"/>

</PreferenceCategory>

<PreferenceCategory
android:key="pref_cat_1"
android:title="category"/>

</PreferenceScreen>

如何在以编程方式创建的 SwitchPreference 上正确地setChecked(true)

测试项目是on Github .

最佳答案

The SwitchPreference is not checked and clicks on the toggle have no effect.

这是在我的机器上检查过的。关于点击后的状态,你是完全正确的。那是因为您从 onPreferenceChange() 回调中返回了 false

onPreferenceChange() 的文档:

Returns: true to update the state of the Preference with the new value.

因此,我只将 false 更改为 true,它按预期工作。

编辑

我正在运行 API 25 平板电脑模拟器。然后在 API 22 模拟器上运行,它没有工作。非常奇怪,它仅在 API 25 上按预期运行。

关于android - SwitchPreference 以编程方式创建,setChecked 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42951557/

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