häufige Probleme in Android-Ansicht entstehen, Fehler bei der Analyse von XML: Nicht konsolidiert Präfix

StackOverflow https://stackoverflow.com/questions/2221221

Frage

Ich habe häufiges Problem in 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>
War es hilfreich?

Lösung

Ein paar Gründe dafür, dass dies geschehen kann:

1) Sie sehen diesen Fehler mit einem falschen Namensraum oder einem Tippfehler in dem Attribute. Wie 'xmlns' falsch ist, sollte es xmlns:android

werden

2) Erster Knoten muss enthalten: xmlns:android="http://schemas.android.com/apk/res/android"

3) Wenn Sie AdMob integrieren, überprüfen Sie benutzerdefinierte Parameter wie ads:adSize, müssen Sie

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

4) Wenn Sie LinearLayout verwenden könnten Sie haben Werkzeuge zu definieren:

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

Andere Tipps

Ich werde eine separate Antwort nur hinzufügen, weil ich es nicht hier sehen. Es ist nicht 100%, was Pentium10 gefragt, aber ich hier gelandet, indem für Error parsing XML: unbound prefix Suche

Es stellte sich heraus, dass ich war mit benutzerdefinierten Parametern für AdMob-Anzeigen wie ads:adSize, aber ich hatte nicht hinzugefügt

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

an das Layout. Sobald ich es fügte hinzu, es hat super funktioniert.

Ich hatte das gleiche Problem.

Stellen Sie sicher, dass das Präfix (android: [was]) richtig geschrieben ist und richtig geschrieben. Im Fall der Linie xmlns:android="http://schemas.android.com/apk/res/android" stellen Sie sicher, dass Sie den vollen Präfix xmlns:android haben und dass es richtig geschrieben ist. Das Gleiche gilt für alle anderen Präfixe - sicherstellen, dass sie richtig und haben android:[name] geschrieben sind. Dies ist, was mein Problem gelöst.

Wie Sie erwähnen, müssen Sie die richtigen Namespace angeben. Sie sehen auch diesen Fehler mit einem falschen Namensraum.

<?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.

  

Ändern:

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

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

Die Fehlermeldung auf alles bezieht, die beginnt „android:“, wie die XML nicht weiß, was die „android:“ Namespace

.      

xmlns:android definiert es.

Dieser Fehler tritt kann in dem Fall, dass Sie verwenden un definierten Präfix wie:

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

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

In Ihrem Fall sollten Sie unten hinzufügen definieren Knoten der XML-Datei zu verankern.

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

  

ungebundener Präfix Fehler für ViewPager Indikator:

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 auch:

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

Dies hat den Trick für mich.

Für mich, ich habe die „ungebundenen Präfix“ Fehler auf dem ersten Linie hier, obwohl ich Android auf der vierten Zeile 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"
>

Ich hatte das gleiche Problem, und festgestellt, dass die Lösung, die die Android hinzuzufügen war: Werkzeuge zum ersten Knoten. 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">

ich in ein wenig mehr für die Neulinge und für Leute, die wie ich werfen werde, dass XML nicht verstehen.

Die Antworten über eine ziemlich gut, aber die allgemeine Antwort ist, dass Sie einen Namespace für jeden Namespace in der Datei config.xml verwendet benötigen.

Übersetzung: Jeder XML-Tag-Name, der Tag mit einem Namespace ist, wo blah der Namespace ist und fubar ist der XML-Tag. Der Namespace können Sie viele verschiedene Tools verwenden, um die XML mit ihren eigenen Tag-Namen zu interpretieren. Zum Beispiel verwendet Intel XDK den Namespace intelxdk und Android nutzt Android. So müssen Sie die folgenden Namespaces oder die Build wirft Blut (das heißt Fehler bei der Analyse von XML: Nicht konsolidiert Präfix), die übersetzt wird: Sie einen Namespace verwendet, es aber nicht definieren.

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

Dieser Fehler tritt in der Regel, wenn Sie nicht die xmlns:mm richtig aufgenommen haben, es tritt in der Regel in der ersten Zeile des Codes.

für mich war es ..

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

, dass ich in der ersten Zeile des Code 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" >

OK, es gibt viele Lösungen, die hier aber nicht wirklich die Ursache des Problems erklären, so hier gehen wir:

Wenn Sie ein Attribut wie android:layout_width="match_parent" der android Teil sehen das Präfix ist, ist das Format für ein Attribut hier PREFIX:NAME="VALUE". in XML, Namespaces und Präfixe geben Möglichkeiten, Namenskonflikte beispielsweise vermeiden wir zwei verschiedene Attribute mit dem gleichen Namen haben, aber verschiedene Präfixe wie:. a:a="val" und b:a="val"

Präfixe wie android oder app oder andere zu verwenden, um Ihr einen Namespace mit xmlns Attribut definieren sollte.

Wenn Sie also dieses Problem haben nur Präfixe, die nicht ein Namensraum definiert haben, wenn Sie tools:... Sie Werkzeuge Namensraum hinzufügen sollten, da einige answeres vorgeschlagen, wenn Sie app:... Attribut sollten Sie xmlns:app="http://schemas.android.com/apk/res-auto" auf das Wurzelelement hinzufügen

Lesen Sie auch:

XML-Namespaces einfache Erklärung

XML-Namespaces in W3

In meinem Fall wurde der Fehler nicht durch eine der oben genannten XML-Namespace-Probleme verursacht. Stattdessen war es der Ort des android:id Attributs - es benötigte das erste Element in dem jeweiligen Elemente Erklärung sein.

So folgt:

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

... benötigt wie folgt zu lesen:

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

Neben all dies gibt es auch ein Szenario, in dem dieser Fehler occures -

Wenn Sie oder Ihr Bibliotheksprojekt definieren benutzerdefinierte Attribute int attr.xml, Und Sie verwenden diese Attribute in Ihrer Layout-Datei ohne Namensraum zu definieren.

Im Allgemeinen verwenden wir diese Namespace-Definition in der Kopfzeile der Layout-Datei.

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

Dann stellen Sie sicher, alle Attribute in der Datei mit shoud starten

android:ATTRIBUTE-NAME

Sie müssen identfy, wenn einige Ihrer attirbute nicht mit etwas anderem als Android-Start ist: ATTRIBUTE-NAME wie

temp:ATTRIBUTE-NAME

In diesem Fall haben Sie diese „temp“ auch als Namensraum, in der Regel, indem -

xmlns:temp="http://schemas.android.com/apk/res-auto"

Sie müssen nur die richtigen Namensraum in Ihrem Root-Tag hinzuzufügen. xmlns: android = "http://schemas.android.com/apk/res/android" Android elemets ist in diesem Namen space.Its gleichen wie Import-Klasse oder Paket deklariert.

Es geschieht in der Regel zu mir, wenn ich android falsch schreiben - ich tippe einfach andorid oder gleich, und es ist nicht klar, auf den ersten Blick vor allem nach vielen Stunden der Programmierung, so dass ich nur eine Suche nach „Android“ eins nach dem anderen und sehen, ob Suche springt ein Tag -. wenn es das tut, dann habe ich einen genauen Blick, und ich sehe, wo Tippfehler war

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top