我想
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)
?
答案 0 :(得分:1)
未选中 SwitchPreference ,点击切换按钮无效。
在我的机器上检查。关于点击它后的状态你是完全正确的。这是因为您从false
回调中返回onPreferenceChange()
。
onPreferenceChange()
的文档:
返回: true 以使用新值更新首选项的状态。
所以,我只是将false
更改为true
,并且按预期工作。
修改强>
我正在运行API 25平板电脑模拟器。然后在API 22模拟器上运行,它没有工作。这很奇怪,它只能在API 25上运行。
答案 1 :(得分:0)
我在使用 addPreference()
时遇到了同样的问题,但我切换到 preferenceGroup.addItemFromInflater(switchPreference)
并且它运行良好。