【发布时间】:2017-03-22 12:23:23
【问题描述】:
我想要
- 以编程方式创建
SwitchPreference - 设置
setChecked(true)就可以了 - 将其添加到
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。
【问题讨论】:
-
我遇到了同样的问题......在
PreferenceCategory上调用addPreference已经有一个SwitchPreference给我带来了问题......我的解决方法是将代码重构为不要使用addPreference。
标签: android android-support-library android-preferences android-preference-v14