Aktivitätslayout: Fragmentklasse: vs. android:name-Attribute

Lesezeit: 3 Minuten

Aktivitatslayout Fragmentklasse vs androidname Attribute
Gianni Costanzi

Ich habe die Dokumentation darüber gelesen Fragmente im Android Developer Guide und ich habe gesehen, dass sie manchmal die zu instanziierende Klasse mit dem Fragment-Tag-Attribut angeben android:name und manchmal benutzen sie die Klasse: 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" />

Gibt android:name und Klasse: austauschbar? Wenn ich die Autovervollständigungsfunktion in Eclipse verwende, zeigen beide den gleichen Dokumentationstipp (dh das Attribut liefert den zu instanziierenden Klassennamen). Möglicherweise müssen Sie die zweite verwenden, wenn die zu instanziierende Klasse einen anderen Namen als den Namen der Java-Datei hat, z TitlesFragment was ist in der FragmentLayout.java Datei? Oder kann ich die Syntax verwenden package.fileDOTjava$Klasse auch mit dem android:name Attribut?

Ich hätte gerne eine Dokumentation für XML-Tags und -Attribute wie für Android-Java-Klassen (ich habe in einer anderen Frage danach gefragt).

Wie Activity.onCreateView Quelle sagt:

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);
}

Das bedeutet anscheinend, dass das Programm zuerst nach dem Attribut “Klasse” sucht. Und bei Fehler sieht das Attribut “Name” aus. Also, soweit es wahr ist, “Klasse” zu verwenden, wenn es effizienter ist.

  • Ich habe gerade ausgecheckt, das Basis-Template von Android Studio 2.0 verwendet name:xxx Attribut standardmäßig.

    – Jak

    23. Februar 16 um 8:59 Uhr

  • “Das android:name-Attribut im gibt die Fragment-Klasse an, die im Layout instanziiert werden soll.” Dies ist die Definition, die ich auf der Entwickler-Website gesehen habe. Buchseite: Verknüpfung.

    – Schibin Francis

    6. Oktober 17 um 7:23 Uhr


Sind android:name und class: austauschbar?

Vermutlich ja. Ich habe nur verwendet classund das scheint das zu sein, was die meisten Beispiele von Google verwenden, aber ich sehe, wo sie es verwenden android:name in einigen Proben. Leider gibt es keine formale und vollständige Dokumentation für <fragment>.

  • Ich wünschte wirklich, es gäbe eine Dokumentation. Seit class keinen Namensraum hat, bin ich neugierig, ob dieses Attribut nicht nur verwendet wurde, während Fragmente entwickelt wurden, sondern belassen wurde, weil sie die Kompatibilität jetzt nicht brechen können. Der Konsistenz halber android:name scheint etwas vorzuziehen und wie user1550716 betonte, scheinen sie austauschbar zu sein.

    – spaaarky21

    6. Juni 13 um 17:11 Uhr

  • @spaaarky21: Ja, ich bin umgestiegen auf android:name überall, überallhin, allerorts.

    – CommonsWare

    6. Juni 13 um 17:23 Uhr

  • zusätzliche Glaubwürdigkeit für die Verwendung von Name vs. Klasse: IntelliJ IDEA verwendet/füllt automatisch das Namensattribut in seinem neuesten Layout-Editor (v13)

    – rmirabelle

    26. Juni 13 um 13:42 Uhr

  • aapt r20 hatte einen Fehler, der nur betroffen war class und @xavier-ducrohet empfohlen android:name. plus.google.com/+XavierDucrohet/posts/7uRN3ba8zxt

    – Jakob Wald

    5. Mai 14 um 18:39 Uhr

  • Benötigen wir einen vollständig qualifizierten Klassennamen? Oder können wir einfach .ArticleReaderFragment?

    – Kenny Worden

    03.09.14 um 23:29 Uhr

Entschuldigung, alle Experten sind hier, ich kann mich irren, aber nach meinem Wissen android:name Das Attribut des Fragments wird verwendet, um das Fragment zu finden, wenn wir es verwenden getFragmentByTag() Methode der fragmentManager-Klasse. Auch android:klasse Das Attribut wird verwendet, um die Fragmentklasse zu finden, für die wir im Allgemeinen einschließen statisches Fragment.

Hoffe, das wird helfen. Danke

  • Gemäß diese Seitesie verwenden die android:tag Attribut dafür, was Sinn macht: android:tag can be used in <fragment> to provide a specific tag name for the fragment

    – Benutzer1978019

    30. April 14 um 14:29 Uhr


.

723510cookie-checkAktivitätslayout: Fragmentklasse: vs. android:name-Attribute

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy