我也想
SwitchPreferencesetChecked(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>如何在以编程方式创建的setChecked(true)上正确地使用SwitchPreference?
测试项目是论吉乌布。
发布于 2017-03-22 12:53:45
没有检查SwitchPreference,点击按钮也没有任何效果。
它是在我的机器上检查的。关于国家,点击它后,你是完全正确的。这是因为您要从false回调返回onPreferenceChange()。
onPreferenceChange()文档
返回:使用新值更新首选项状态的true。
因此,我只将false更改为true,并按预期工作。
编辑
我在运行API 25平板仿真器。然后在API 22仿真器上运行,但没有工作。很奇怪,它只在API 25上按预期运行。
发布于 2021-03-10 04:45:06
我在使用addPreference()时也有同样的问题,但是我切换到了preferenceGroup.addItemFromInflater(switchPreference),它工作得很好。
https://stackoverflow.com/questions/42951557
复制相似问题