63 votes

Présentation de l'activité: Classe de fragments: vs Android: attributs de nom

J'ai lu la documentation sur des Fragments dans l'Android Developer Guide et j'ai vu que, parfois, ils spécifier la classe à instancier avec le Fragment de la balise attribut android:name et, parfois, ils utilisent la classe: attribut:

<fragment
    android:name="com.example.news.ArticleReaderFragment"
    android:id="@+id/viewer"
    android:layout_weight="2"
    android:layout_width="0dp"
    android:layout_height="match_parent" />

<fragment
    class="com.example.android.apis.app.FragmentLayout$TitlesFragment"
    android:id="@+id/titles" 
    android:layout_weight="1"
    android:layout_width="0px" 
    android:layout_height="match_parent" />

Sont android:nom et classe: sont-ils interchangeables? Si j'utilise la fonction d'auto-complétion dans Eclipse, ils montrent tous les deux la même documentation de pointe (c'est à dire l'attribut fournit le nom de la classe pour être instancié). Peut-être que vous devez utiliser la deuxième, lorsque la classe sera instanciée a un nom qui est différent du java nom de fichier, comme TitlesFragment qui est dans le FragmentLayout.java fichier? Ou puis-je utiliser la syntaxe paquet.fileDOTjava de Classe$ aussi avec le android:nom de l'attribut?

J'aimerais avoir de la documentation pour XML, les balises et les attributs Android Classes Java (j'ai demandé à ce sujet d'une autre question).

42voto

far.be Points 229

Comme l'indique la source Activity.onCreateView:

 String fname = attrs.getAttributeValue(null, "class");
TypedArray a = context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.Fragment);
if (fname == null) {
    fname = a.getString(com.android.internal.R.styleable.Fragment_name);
}
 

Cela signifie apparemment que le programme ressemble en premier à l'attribut "class". Et en cas d'échec, regarde "attribut". Donc, dans la mesure où c'est vrai, utiliser "classe" est plus efficace.

24voto

CommonsWare Points 402670

Les androïdes: nom et classe sont-ils interchangeables?

Vraisemblablement, oui. Je n'ai utilisé que class , et cela semble être ce que la plupart des exemples de Google utilisent, mais je vois où ils utilisent android:name dans certains échantillons. Malheureusement, il n’existe pas de documentation officielle et complète pour <fragment> .

0voto

AndroUser Points 159

Désolé, tous les experts sont ici, je peux me tromper, mais selon mes connaissances, l’attribut name de fragment est utilisé pour rechercher fragment, lorsque nous utilisons la méthode getFragmentByTag () de la classe fragmentManager. L'attribut android: class est également utilisé pour trouver la classe de fragments que nous incluons généralement pour les fragments statiques .

J'espère que cela vous aidera .. merci

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X