web-dev-qa-db-fra.com

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

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

<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" />

Est-ce que Android: nom et classe: interchangeables? Si j'utilise la fonction de saisie semi-automatique dans Eclipse, ils affichent tous les deux la même astuce de documentation (c'est-à-dire que l'attribut fournit le nom de classe à instancier). Vous devez peut-être utiliser le second lorsque la classe à instancier a un nom différent du nom de fichier Java, comme TitlesFragment qui se trouve dans le fichier FragmentLayout.Java ? Ou puis-je utiliser la syntaxe package.fileDOTjava $ Classe également avec l'attribut Android: name ?

J'aimerais avoir une documentation pour les balises et les attributs XML comme pour Android Java Classes (j'ai posé des questions à ce sujet dans une autre question ).

63
Gianni Costanzi

Comme le dit 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 regarde d'abord l'attribut "classe". Et en cas d'échec, l'attribut "nom" apparaît. Donc, pour autant que ce soit vrai, utiliser "classe" est plus efficace.

42
far.be

Android: nom et classe: 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 exemples. Malheureusement, il n'y a pas de documentation officielle et complète pour <fragment>.

24
CommonsWare

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

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

0
AndroUser