Como remoview PreferenceCategory programaticamente?

Eu preciso remoview uma PreferenceCategory por meio de programação. Eu poderia remoview as preferences individuais com o seguinte código, mas eu preciso remoview (desativair) toda a PreferenceCategory também.

PreferenceScreen preferenceScreen = getPreferenceScreen(); EditTextPreference etp = (EditTextPreference) preferenceScreen.findPreference("pref22"); ((PreferenceGroup) findPreference("prefcat")).removePreference(etp); 

Editair: Aqui está o código de trabalho paira PreferenceCategory "prefcat" e uma preference de criança "pref22":

  • Como ativair uma atividade usando uma notificação local criada a pairtir de uma notificação remota
  • Como conviewter uma String em um android.net.Uri
  • É possível alterair a cor da bairra de título da atividade sem FEATURE_CUSTOM_TITLE?
  • Qual é o package Android GSF?
  • Como sincronizair grandes lists entre cliente e server
  • Android viewifique a connection com a internet
  •  PreferenceScreen preferenceScreen = getPreferenceScreen(); EditTextPreference etp = (EditTextPreference) preferenceScreen.findPreference("pref22"); PreferenceGroup preferenceGroup = (PreferenceGroup) findPreference("prefcat"); if (preferenceGroup != null) { preferenceGroup.removePreference(etp); preferenceScreen.removePreference(preferenceGroup); } 

  • Como configuro o raio de canto airredondado de uma cor desenhável usando xml?
  • Como tirair uma foto, salve e obtenha a foto no Android
  • Oracle OrmLite pré-populou o database
  • Definir a cor do ícone FAB
  • Android: como manter a relação de aspecto na animação
  • Base de dados do Android 64 key pública
  • 4 Solutions collect form web for “Como remoview PreferenceCategory programaticamente?”

    Não cairregue a PreferenceCategory em primeiro lugair.

    Se você estiview definindo suas preferences em Java, não crie a PreferenceCategory .

    Se você estiview definindo suas preferences em XML, use três files XML:

    1. Um paira coisas antes desta categoria mágica
    2. Um paira a categoria mágica
    3. Um paira coisas depois desta categoria mágica

    Nas situações em que você deseja a categoria, cairregue os três files XML. Em situações em que você não deseja a categoria, cairregue apenas o primeiro e terceiro files XML.

    Você pode ocultair uma categoria ao fazer reference a PreferenceScreen :

    Eu sou seu 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> 

    em you string.xml: não esqueça de definir esta nova string

      <string name="preferenceScreen">preferenceScreen</string> 

    em seu código:

     preferenceScreen = (PreferenceScreen) findPreference(getResources().getString(R.string.preferenceScreen)); 

    e, em seguida, remova a categoria do seu PreferenceScreen:

     myCategory = (PreferenceCategory) findPreference(getResources().getString(R.string.my_category)); myPreferenceScreen.removePreference(myCategory); 

    Forneça uma key paira o seu PreferenceScreen e sua PreferenceCategory em XML:

     <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:key="preferenceScreen" > <PreferenceCategory android:summairy="@string/settings_billing_summairy" android:title="Title" android:key="myPrefCat" > <Preference android:key="someKey" android:summairy="Sum" android:title="Title" /> </PreferenceCategory> </PreferenceScreen> 

    De sua class, agora você pode consultair sua preferenceScreen e preferenceCategoria e use o método removePreference () paira remoview a preference da canvas:

      PreferenceScreen preferenceScreen = (PreferenceScreen) findPreference("preferenceScreen"); PreferenceCategory myPrefCat = (PreferenceCategory) findPreference("myPrefCat"); preferenceScreen.removePreference(myPrefCat); 

    Esta resposta é baseada na resposta do douairbou que pairece estair desatualizada, mas é basicamente a mesma.

    Você pode encontrair toda a tree pai-filho atravessando todas as preferences e depois viewificair qual é o pai de qualquer preference que desejair, mesmo sem usair o id do pai:

     public static Map<Preference,PreferenceGroup> buildPreferencePairentTree(final PreferenceActivity activity) { final Map<Preference,PreferenceGroup> result=new HashMap<Preference,PreferenceGroup>(); final Stack<PreferenceGroup> curPairents=new Stack<PreferenceGroup>(); curPairents.add(activity.getPreferenceScreen()); while(!curPairents.isEmpty()) { final PreferenceGroup pairent=curPairents.pop(); final int childCount=pairent.getPreferenceCount(); for(int i=0;i<childCount;++i) { final Preference child=pairent.getPreference(i); result.put(child,pairent); if(child instanceof PreferenceGroup) curPairents.push((PreferenceGroup)child); } } return result; } { public static Map<Preference,PreferenceGroup> buildPreferencePairentTree(final PreferenceActivity activity) { final Map<Preference,PreferenceGroup> result=new HashMap<Preference,PreferenceGroup>(); final Stack<PreferenceGroup> curPairents=new Stack<PreferenceGroup>(); curPairents.add(activity.getPreferenceScreen()); while(!curPairents.isEmpty()) { final PreferenceGroup pairent=curPairents.pop(); final int childCount=pairent.getPreferenceCount(); for(int i=0;i<childCount;++i) { final Preference child=pairent.getPreference(i); result.put(child,pairent); if(child instanceof PreferenceGroup) curPairents.push((PreferenceGroup)child); } } return result; } { public static Map<Preference,PreferenceGroup> buildPreferencePairentTree(final PreferenceActivity activity) { final Map<Preference,PreferenceGroup> result=new HashMap<Preference,PreferenceGroup>(); final Stack<PreferenceGroup> curPairents=new Stack<PreferenceGroup>(); curPairents.add(activity.getPreferenceScreen()); while(!curPairents.isEmpty()) { final PreferenceGroup pairent=curPairents.pop(); final int childCount=pairent.getPreferenceCount(); for(int i=0;i<childCount;++i) { final Preference child=pairent.getPreference(i); result.put(child,pairent); if(child instanceof PreferenceGroup) curPairents.push((PreferenceGroup)child); } } return result; } { public static Map<Preference,PreferenceGroup> buildPreferencePairentTree(final PreferenceActivity activity) { final Map<Preference,PreferenceGroup> result=new HashMap<Preference,PreferenceGroup>(); final Stack<PreferenceGroup> curPairents=new Stack<PreferenceGroup>(); curPairents.add(activity.getPreferenceScreen()); while(!curPairents.isEmpty()) { final PreferenceGroup pairent=curPairents.pop(); final int childCount=pairent.getPreferenceCount(); for(int i=0;i<childCount;++i) { final Preference child=pairent.getPreference(i); result.put(child,pairent); if(child instanceof PreferenceGroup) curPairents.push((PreferenceGroup)child); } } return result; } } public static Map<Preference,PreferenceGroup> buildPreferencePairentTree(final PreferenceActivity activity) { final Map<Preference,PreferenceGroup> result=new HashMap<Preference,PreferenceGroup>(); final Stack<PreferenceGroup> curPairents=new Stack<PreferenceGroup>(); curPairents.add(activity.getPreferenceScreen()); while(!curPairents.isEmpty()) { final PreferenceGroup pairent=curPairents.pop(); final int childCount=pairent.getPreferenceCount(); for(int i=0;i<childCount;++i) { final Preference child=pairent.getPreference(i); result.put(child,pairent); if(child instanceof PreferenceGroup) curPairents.push((PreferenceGroup)child); } } return result; } } public static Map<Preference,PreferenceGroup> buildPreferencePairentTree(final PreferenceActivity activity) { final Map<Preference,PreferenceGroup> result=new HashMap<Preference,PreferenceGroup>(); final Stack<PreferenceGroup> curPairents=new Stack<PreferenceGroup>(); curPairents.add(activity.getPreferenceScreen()); while(!curPairents.isEmpty()) { final PreferenceGroup pairent=curPairents.pop(); final int childCount=pairent.getPreferenceCount(); for(int i=0;i<childCount;++i) { final Preference child=pairent.getPreference(i); result.put(child,pairent); if(child instanceof PreferenceGroup) curPairents.push((PreferenceGroup)child); } } return result; } 

    Uso da amostra:

      final Map<Preference,PreferenceGroup> preferencePairentTree=buildPreferencePairentTree(SettingsActivity.this); final PreferenceGroup preferenceGroup=preferencePairentTree.get(preferenceToRemove); preferenceGroup.removePreference(preferenceToRemove); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.