Вы можете найти все дочернее родительское дерево, пройдя по всем предпочтениям, а затем проверив, кто является родительским для любого предпочтения, даже без использования идентификатора родителя:
public static Map<Preference,PreferenceGroup> buildPreferenceParentTree(final PreferenceActivity activity)
{
final Map<Preference,PreferenceGroup> result=new HashMap<Preference,PreferenceGroup>();
final Stack<PreferenceGroup> curParents=new Stack<PreferenceGroup>();
curParents.add(activity.getPreferenceScreen());
while(!curParents.isEmpty())
{
final PreferenceGroup parent=curParents.pop();
final int childCount=parent.getPreferenceCount();
for(int i=0;i<childCount;++i)
{
final Preference child=parent.getPreference(i);
result.put(child,parent);
if(child instanceof PreferenceGroup)
curParents.push((PreferenceGroup)child);
}
}
return result;
}
Использование:
final Map<Preference,PreferenceGroup> preferenceParentTree=buildPreferenceParentTree(SettingsActivity.this);
final PreferenceGroup preferenceParent=preferenceParentTree.get(preference);
РЕДАКТИРОВАТЬ: Если вы хотите просто скрыть это, вы также можете использовать это:
https://developer.android.com/reference/androidx/preference/Preference#setVisible(boolean)
Я не уверенесли в настоящее время это доступно или нет, хотя.