9

Quando si desidera accedere a una visualizzazione personalizzata in qualche file layout.xml, si hanno due opzioni:un'istanza di una classe interna (Preferenze) nel file xml

  1. la vista è in esso la propria classe. Poi si fa <package.name.MyView android:layout_width= ... />
  2. La vista è una classe interna: <view class="package.name.OuterClass$MyView" android:layout_width= ... />

Ora voglio fare la stessa cosa all'interno di un <PreferenceScreen>. Il primo modo funziona bene, ma vorrei mettere tutte le classi personalizzate Preference nel mio PreferenceActivity. Ho provato <Preference class="package.name.OuterClass$MyPreference" ... /> (anche con '.' Invece di '$') e <package.name.OuterClass.MyPreference ... />, ma entrambi non sono riusciti.

Qualcuno ha un'idea?

+0

Assicurati che le tue classi interne siano statiche. – inazaruk

+0

Ancora nessuno dei due metodi funziona. Strano a dirsi che l'attributo 'class' è completamente ignorato, anche se contiene un'assurdità. – m1ntf4n

risposta

2

Quando si tratta di Views gonfiaggio, LayoutInflater sembra per una "vista" -> caso "classe":

View createViewFromTag(View parent, String name, AttributeSet attrs) { 
    if (name.equals("view")) { 
     name = attrs.getAttributeValue(null, "class"); 
    } ... 

di PreferenceInflater Preferenze non lo fa, in modo che sia per il caso "di classe".

Usa la riflessione nel suo metodo createItem() e questo è probabilmente il motivo per cui il primo caso funziona per voi.

+0

Questo è così aggravante. – drewbug

Problemi correlati