Ich habe häufige Probleme in der Android-Ansicht Error parsing XML: unbound prefix on Line 2
.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:id="@+id/myScrollLayout"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:layout_height="wrap_content" android:layout_width="fill_parent"
android:text="Family" android:id="@+id/Family"
android:textSize="16px" android:padding="5px"
android:textStyle="bold" android:gravity="center_horizontal">
</TextView>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="vertical" android:scrollbars="vertical">
<LinearLayout android:orientation="vertical" android:id="@+id/myMainLayout"
android:layout_width="fill_parent" android:layout_height="wrap_content">
</LinearLayout>
</ScrollView>
</LinearLayout>
xml
android
eclipse
android-linearlayout
Pentium10
quelle
quelle
Antworten:
Einige Gründe, warum dies passieren kann:
1) Sie sehen diesen Fehler mit einem falschen Namespace oder einem Tippfehler im Attribut. Wie 'xmlns' falsch ist, sollte es sein
xmlns:android
2) Der erste Knoten muss enthalten:
xmlns:android="http://schemas.android.com/apk/res/android"
3) Wenn Sie AdMob integrieren, überprüfen
ads:adSize
Sie die von Ihnen benötigten benutzerdefinierten Parameterxmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
4) Wenn Sie verwenden, müssen
LinearLayout
Sie möglicherweise Werkzeuge definieren:xmlns:tools="http://schemas.android.com/tools"
quelle
Ich werde eine separate Antwort hinzufügen, nur weil ich sie hier nicht sehe. Es ist nicht 100% das, wonach Pentium10 gefragt hat, aber ich bin hier gelandet, indem ich gesucht habe
Error parsing XML: unbound prefix
Es stellte sich heraus, dass ich benutzerdefinierte Parameter für AdMob-Anzeigen wie verwendet habe
ads:adSize
, diese jedoch nicht hinzugefügt habezum Layout. Sobald ich es hinzugefügt habe, hat es großartig funktioniert.
quelle
Ich hatte das gleiche Problem.
Stellen Sie sicher, dass das Präfix (android: [was auch immer]) richtig geschrieben und richtig geschrieben ist. Stellen Sie im Fall der Zeile
xmlns:android="http://schemas.android.com/apk/res/android"
sicher, dass Sie das vollständige Präfix habenxmlns:android
und dass es richtig geschrieben ist. Gleiches gilt für alle anderen Präfixe - stellen Sie sicher, dass sie richtig geschrieben sind und habenandroid:[name]
. Dies hat mein Problem gelöst.quelle
Wie Sie bereits erwähnt haben, müssen Sie den richtigen Namespace angeben . Sie sehen diesen Fehler auch mit einem falschen Namespace.
wird nicht funktionieren.
quelle
Dieser Fehler kann auftreten, wenn Sie ein nicht definiertes Präfix verwenden, z.
Der Android-Compiler weiß nicht, was XYZ ist, da es noch nicht definiert wurde.
In Ihrem Fall sollten Sie unten den Stammknoten der XML-Datei definieren.
quelle
Zusammen mit den folgenden Header-Tags in Ihrem parentLayout:
Fügen Sie außerdem hinzu:
Das hat den Trick für mich getan.
quelle
Für mich habe ich hier in der ersten Zeile den Fehler "ungebundenes Präfix" erhalten, obwohl ich in der vierten Zeile Android falsch geschrieben hatte.
quelle
Ich hatte das gleiche Problem und stellte fest, dass die Lösung darin bestand, die android: tools zum ersten Knoten hinzuzufügen. In meinem Fall handelt es sich um ein LineraLayout:
quelle
Ich werde ein bisschen mehr für die Neulinge und für Leute wie mich tun, die XML nicht verstehen.
Die obigen Antworten sind ziemlich gut, aber die allgemeine Antwort lautet, dass Sie für jeden in der Datei config.xml verwendeten Namespace einen Namespace benötigen.
Übersetzung: Jeder XML-Tag-Name ist ein Tag mit einem Namespace, wobei blah der Namespace und fubar das XML-Tag ist. Mit dem Namespace können Sie viele verschiedene Tools verwenden, um das XML mit eigenen Tag-Namen zu interpretieren. Beispielsweise verwendet Intel XDK den Namespace intelxdk und Android verwendet Android. Daher benötigen Sie die folgenden Namespaces, oder der Build wirft Blut auf (dh Fehler beim Parsen von XML: ungebundenes Präfix), das übersetzt wird in: Sie haben einen Namespace verwendet, ihn aber nicht definiert.
quelle
OK, hier gibt es viele Lösungen, aber nicht die eigentliche Ursache des Problems erklären, also los geht's:
Wenn Sie sehen, dass ein Attribut wie
android:layout_width="match_parent"
dasandroid
Teil das Präfix ist, lautet das Format für ein Attribut hierPREFIX:NAME="VALUE"
. In XML sind Namespaces und Präfixe Möglichkeiten, um Namenskonflikte zu vermeiden. Beispielsweise können wir zwei unterschiedliche Attribute mit demselben Namen, aber unterschiedlichen Präfixen wie:a:a="val"
und habenb:a="val"
.Um Präfixe wie
android
oderapp
andere zu verwenden, sollten Sie einen Namespace mithilfe einesxmlns
Attributs definieren.also , wenn Sie dieses Problem haben nur Präfixe finden, die nicht über ein Namensraum definiert haben, wenn Sie haben
tools:...
Sie Werkzeuge Namensraum hinzufügen sollten , da einige answeres vorgeschlagen, wenn Sieapp:...
Attribut sollten Sie hinzufügen ,xmlns:app="http://schemas.android.com/apk/res-auto"
um das WurzelelementWeiterführende Literatur:
Einfache Erklärung der XML-Namespaces
XML-Namespaces in W3
quelle
Dieser Fehler tritt normalerweise auf, wenn Sie den nicht
xmlns:mm
richtig aufgenommen haben. Er tritt normalerweise in der ersten Codezeile auf.für mich war es ..
xmlns: mm = "http://millennialmedia.com/android/schema"
dass ich in der ersten Zeile des Codes verpasst habe
quelle
In meinem Fall wurde der Fehler nicht durch eines der oben genannten Probleme mit dem XML-Namespace verursacht. Stattdessen war es die Position des
android:id
Attributs - es musste das erste Element in der Deklaration des jeweiligen Elements sein.Also das:
... musste so lesen:
quelle
Daneben gibt es auch ein Szenario, in dem dieser Fehler auftritt.
Wenn Sie oder Ihr Bibliotheksprojekt ein benutzerdefiniertes Attribut in der Datei attr.xml definieren und diese Attribute in Ihrer Layoutdatei verwenden, ohne den Namespace zu definieren.
Im Allgemeinen verwenden wir diese Namespace-Definition im Header unserer Layoutdatei.
Stellen Sie dann sicher, dass alle Attribute in Ihrer Datei mit beginnen
Sie müssen sich identifizieren, wenn ein Teil Ihrer Attirbute nicht mit etwas anderem als Android beginnt: ATTRIBUTE-NAME like
In diesem Fall haben Sie diese "Temperatur" auch als Namespace, in der Regel durch Einschließen von-
quelle
Sie müssen nur den richtigen Namensraum in Ihr Root-Tag einfügen. xmlns: android = "http://schemas.android.com/apk/res/android" Android-Elemente werden in diesem Namensraum deklariert. Dies entspricht dem Importieren von Klassen oder Paketen.
quelle
Es passiert mir normalerweise, wenn ich Android falsch schreibe - ich tippe nur andorid oder ähnlich, und es ist auf den ersten Blick nicht offensichtlich, besonders nach vielen Stunden Programmieren, also mache ich einfach eine Suche nach "android" nacheinander und sehe, ob die Suche eine überspringt tag - wenn ja, dann schaue ich genau hin und sehe, wo Tippfehler waren.
quelle
Ich habe diesen Fehler in Xamarin erhalten, als ich verwendet habe
in einer Layoutdatei ohne Installation des Nuget-Pakets für android.support.v7.widget.CardView
Durch die Installation des entsprechenden Nuget-Pakets wurde das Problem behoben. Hoffe es hilft, ich habe diese Antwort nirgendwo in der Liste gesehen
quelle