it-swarm.com.de

Häufig auftretende Probleme in Android view, Fehler beim Parsen von XML: ungebundenes Präfix

Ich habe ein häufiges Problem in Android view, 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>
289
Pentium10

Ein paar 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 Sie die von Ihnen benötigten benutzerdefinierten Parameter wie ads:adSize

xmlns:ads="http://schemas.Android.com/apk/lib/com.google.ads"

4) Wenn Sie LinearLayout verwenden, müssen Sie möglicherweise Tools definieren:

xmlns:tools="http://schemas.Android.com/tools"

536
Pentium10

Ich werde eine separate Antwort hinzufügen, nur weil ich sie hier nicht sehe. Es ist nicht zu 100% das, wonach Pentium10 gefragt hat, aber ich bin auf der Suche nach Error parsing XML: unbound prefix Hier gelandet.

Es stellte sich heraus, dass ich benutzerdefinierte Parameter für AdMob-Anzeigen wie ads:adSize Verwendet habe, dies jedoch nicht hinzugefügt habe

    xmlns:ads="http://schemas.Android.com/apk/lib/com.google.ads"

zum Layout. Nachdem ich es hinzugefügt habe, hat es großartig funktioniert.

100
MalcolmOcean

Ich hatte das gleiche Problem.

Stellen Sie sicher, dass das Präfix (Android: [whatever]) richtig geschrieben ist. Stellen Sie bei der Zeile xmlns:Android="http://schemas.Android.com/apk/res/Android" Sicher, dass Sie das vollständige Präfix xmlns:Android Haben und dass es richtig geschrieben ist. Das Gleiche gilt für alle anderen Präfixe - stellen Sie sicher, dass sie richtig geschrieben sind und Android:[name] Haben. Das hat mein Problem gelöst.

62
Daniel

Wie Sie bereits erwähnt haben, müssen Sie den richtigen Namespace angeben. Sie sehen diesen Fehler auch mit einem falschen Namespace.

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns="http://schemas.Android.com/apk/res/Android"
         Android:layout_width="fill_parent"
         Android:layout_height="fill_parent"
         Android:padding="10dip">

wird nicht funktionieren.

Veränderung:

xmlns="http://schemas.Android.com/apk/res/Android"

zu

xmlns:Android="http://schemas.Android.com/apk/res/Android"

Die Fehlermeldung bezieht sich auf alles, was "Android:" startet, da das XML nicht weiß, was das "Android: "Namespace ist.

xmlns:Android definiert es.

31
VonC

Dieser Fehler kann auftreten, wenn Sie ein nicht definiertes Präfix verwenden, z.

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical" >

<TabHost
    XYZ:id="@Android:id/tabhost"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent" >


</TabHost>

Der Android-Compiler weiß nicht, was XYZ ist, da es noch nicht definiert wurde.

In Ihrem Fall sollten Sie unten definieren, um den Wurzelknoten der XML-Datei hinzuzufügen.

xmlns:Android="http://schemas.Android.com/apk/res/Android"
23

ungebundener Präfixfehler für ViewPager Indicator:

Zusammen mit den folgenden Header-Tags in Ihrem parentLayout:

xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"

Fügen Sie außerdem hinzu:

xmlns:app="http://schemas.Android.com/apk/res-auto"

Das hat den Trick für mich getan.

10
amalBit

Für mich wurde hier in der ersten Zeile der Fehler "ungebundenes Präfix" angezeigt, obwohl ich in der vierten Zeile Android falsch geschrieben hatte.

<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
anrdoid:fillViewport="true"
>
9
flobacca

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 ist es ein LineraLayout:

    <LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" 
    Android:orientation="vertical">
7
Sebastian Breit

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 Namespace, der in der Datei config.xml verwendet wird, einen Namespace benötigen.

Übersetzung: Jeder XML-Tag-Name, der ein Tag mit einem Namespace hat, 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 den Build Throws Up Blood (dh Fehler beim Parsen von XML: ungebundenes Präfix), der in "You" übersetzt wird hat einen Namespace verwendet, ihn aber nicht definiert.

  xmlns:Android="http://schemas.Android.com/apk/res/Android"
  xmlns:intelxdk="http://xdk.intel.com/ns/v1"
3
turbogeek

OK, hier gibt es viele Lösungen, aber erklären Sie nicht die eigentliche Ursache des Problems.

wenn Sie ein Attribut wie Android:layout_width="match_parent" sehen, ist der Teil Android das Präfix. Das Format für ein Attribut hier ist PREFIX:NAME="VALUE". In XML stellen Namespaces und Präfixe Möglichkeiten dar, Namenskonflikte zu vermeiden. Beispielsweise können zwei unterschiedliche Attribute mit demselben Namen, aber unterschiedlichen Präfixen wie a:a="val" und b:a="val" verwendet werden.

um Präfixe wie Android oder app oder andere zu verwenden, müssen Sie einen Namespace mit dem Attribut xmlns definieren.

wenn Sie dieses Problem haben, suchen Sie einfach nach Präfixen, für die kein Namespace definiert ist. Wenn Sie tools:... haben, sollten Sie den Namespace für Tools hinzufügen. Wenn Sie das Attribut app:... haben, sollten Sie xmlns:app="http://schemas.Android.com/apk/res-auto" Zum Wurzelelement

Weitere Lektüre:

Einfache Erklärung für XML-Namespaces

XML-Namespaces in W

2
mohas

Dieser Fehler tritt normalerweise in der ersten Codezeile auf, wenn Sie xmlns:mm Nicht korrekt eingegeben haben.

für mich war es ..

xmlns: mm = "http://millennialmedia.com/Android/schema"

das habe ich in der ersten Zeile des Codes verpasst

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:mm="http://millennialmedia.com/Android/schema"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:layout_marginTop="50dp"
Android:layout_marginBottom="50dp"
Android:background="@Android:color/transparent" >
2
Kailas

Daneben gibt es auch ein Szenario, in dem dieser Fehler auftritt.

Wenn Sie oder Ihr Bibliotheksprojekt das benutzerdefinierte Attribut int attr.xml definieren und Sie diese Attribute in Ihrer Layoutdatei verwenden, ohne den Namespace zu definieren.

Im Allgemeinen verwenden wir diese Namespace-Definition im Header unserer Layout-Datei.

xmlns:Android="http://schemas.Android.com/apk/res/Android"

Stellen Sie dann sicher, dass alle Attribute in Ihrer Datei mit beginnen

Android:ATTRIBUTE-NAME

Sie müssen sich identifizieren, wenn ein Teil Ihrer Attirbute nicht mit etwas anderem als Android beginnt: ATTRIBUTE-NAME like

temp:ATTRIBUTE-NAME

In diesem Fall haben Sie dieses "temp" auch als Namespace, in der Regel indem Sie

xmlns:temp="http://schemas.Android.com/apk/res-auto"
1
Anuj Garg

In meinem Fall wurde der Fehler nicht durch eines der oben genannten Probleme mit dem XML-Namespace verursacht. Stattdessen war es der Ort des Android:id attribute - Es musste das erste Element in der Deklaration des jeweiligen Elements sein.

Also das:

<TextView Android:layout_width="fill_parent" 
      Android:layout_height="wrap_content"
      Android:id="@+id/bottomtext" 
      Android:singleLine="true" />

... musste so lesen:

<TextView Android:id="@+id/bottomtext" 
      Android:layout_width="fill_parent" 
      Android:layout_height="wrap_content"
      Android:singleLine="true" />
1
okredo

Sie müssen nur den richtigen Namensraum in Ihr Root-Tag einfügen. xmlns: Android = "http://schemas.Android.com/apk/res/Android" Android elemets werden in diesem Namensraum deklariert. Entspricht dem Importieren von Klassen oder Paketen.

1
Gevaria Purva

Normalerweise passiert es mir, wenn ich falsch schreibe Android - Ich tippe nur andorid oder ähnlich, und es ist nicht auf den ersten Blick offensichtlich, besonders nach vielen Stunden des Programmierens, also suche ich einfach nach "Android". eins nach dem anderen und sehen, ob die Suche ein Tag überspringt - wenn ja, schaue ich genau hin und sehe, wo Tippfehler waren.

0
Nenad Bulatovic