I need to remove a PreferenceCategory programmatically. I could remove the individual preferences with the following code but I need to remove (disable) whole PreferenceCategory as well.
PreferenceScreen preferenceScreen = getPreferenceScreen();
EditTextPreference etp = (EditTextPreference) preferenceScreen.findPreference("pref22");
((PreferenceGroup) findPreference("prefcat")).removePreference(etp);
Edit: Here's the working code for a PreferenceCategory "prefcat" and a child preference "pref22":
PreferenceScreen preferenceScreen = getPreferenceScreen();
EditTextPreference etp = (EditTextPreference) preferenceScreen.findPreference("pref22");
PreferenceGroup preferenceGroup = (PreferenceGroup) findPreference("prefcat");
if (preferenceGroup != null) {
preferenceGroup.removePreference(etp);
preferenceScreen.removePreference(preferenceGroup);
}
you can hide a category by getting reference to PreferenceScreen
:
I your xml :
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="@string/preferenceScreen">
//set all you values
//Preference, PreferenceCategory and/or CheckBoxPreference
</PreferenceScreen>
in you string.xml : don't forgot to set this new string
<string name="preferenceScreen" translatable="false">preferenceScreen</string>
in you code:
preferenceScreen = (PreferenceScreen) findPreference(getResources().getString(R.string.preferenceScreen));
and then remove the category from your PreferenceScreen :
myCategory = (PreferenceCategory) findPreference(getResources().getString(R.string.my_category));
myPreferenceScreen.removePreference(myCategory);