Tengo un problema frecuente en vista androide, 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
fuente
fuente
Respuestas:
Un par de razones por las que esto puede suceder:
1) Verá este error con un espacio de nombres incorrecto o un error tipográfico en el atributo. Como 'xmlns' está mal, debería ser
xmlns:android
2) El primer nodo debe contener:
xmlns:android="http://schemas.android.com/apk/res/android"
3) Si está integrando AdMob, verifique parámetros personalizados como
ads:adSize
, necesitaxmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
4) Si está utilizando
LinearLayout
puede que tenga que definir herramientas:xmlns:tools="http://schemas.android.com/tools"
fuente
Voy a agregar una respuesta por separado solo porque no la veo aquí. No es 100% lo que pidió Pentium10, pero terminé aquí buscando
Error parsing XML: unbound prefix
Resulta que estaba usando parámetros personalizados para anuncios de AdMob como
ads:adSize
, pero no había agregadoal diseño. Una vez que lo agregué funcionó muy bien.
fuente
Yo tuve el mísmo problema.
Asegúrese de que el prefijo (android: [lo que sea]) esté escrito y escrito correctamente. En el caso de la línea,
xmlns:android="http://schemas.android.com/apk/res/android"
asegúrese de tener el prefijo completoxmlns:android
y de que esté escrito correctamente. Lo mismo con cualquier otro prefijo: asegúrese de que esté escrito correctamente y tengaandroid:[name]
. Esto es lo que resolvió mi problema.fuente
Como mencionas, debes especificar el espacio de nombres correcto . También ve este error con un espacio de nombres incorrecto.
no trabajará.
fuente
Este error puede ocurrir en el caso de que use un prefijo no definido como:
El compilador de Android no sabe qué es XYZ ya que aún no se definió.
En su caso, debe agregar a continuación definir al nodo raíz del archivo xml.
fuente
Junto con las siguientes etiquetas de encabezado en su parentLayout:
También agregue:
Esto hizo el truco para mí.
fuente
Para mí, recibí el error "prefijo independiente" en la primera línea aquí, aunque había escrito mal Android en la cuarta línea.
fuente
Tuve el mismo problema y descubrí que la solución era agregar las herramientas android: al primer nodo. En mi caso es un LineraLayout:
fuente
Echaré un poco más para los novatos y para las personas, como yo, que no entienden XML.
Las respuestas anteriores son bastante buenas, pero la respuesta general es que necesita un espacio de nombres para cualquier espacio de nombres utilizado en el archivo config.xml.
Traducción: cualquier nombre de etiqueta XML que tenga es una etiqueta con un espacio de nombres donde blah es el espacio de nombres y fubar es la etiqueta XML. El espacio de nombres le permite usar muchas herramientas diferentes para interpretar el XML con sus propios nombres de etiquetas. Por ejemplo, Intel XDK usa el espacio de nombres intelxdk y android usa android. Por lo tanto, necesita los siguientes espacios de nombres o la compilación arroja sangre (es decir, Error al analizar XML: prefijo independiente) que se traduce en: Usó un espacio de nombres, pero no lo definió.
fuente
OK, hay muchas soluciones aquí, pero en realidad no explican la causa raíz del problema, así que aquí vamos:
cuando vea un atributo como
android:layout_width="match_parent"
laandroid
parte es el prefijo, el formato para un atributo aquí esPREFIX:NAME="VALUE"
. en XML, los espacios de nombres y los prefijos son formas de evitar conflictos de nombres, por ejemplo, podemos tener dos atributos distintos con el mismo nombre pero con prefijos diferentes como:a:a="val"
yb:a="val"
.para usar prefijos como
android
oapp
cualquier otro, debe definir un espacio de nombres usandoxmlns
atributo.así que si tiene este problema, simplemente busque prefijos que no tengan un espacio de nombres definido, si lo tiene
tools:...
, debe agregar el espacio de nombres de las herramientas como sugieren algunos respondedores, si tiene unapp:...
atributo, debe agregarxmlns:app="http://schemas.android.com/apk/res-auto"
al elemento raízOtras lecturas:
Explicación simple de espacios de nombres XML
Espacios de nombres XML en W3
fuente
Este error generalmente ocurre si no lo ha incluido
xmlns:mm
correctamente, generalmente ocurre en la primera línea de código.para mi fue ..
xmlns: mm = "http://millennialmedia.com/android/schema"
que me perdí en la primera línea del código
fuente
En mi caso, el error no fue causado por ninguno de los problemas de espacio de nombres xml anteriores. En cambio, era la ubicación del
android:id
atributo: tenía que ser el primer elemento en la declaración del elemento en particular.Así que esto:
... necesitaba leer así:
fuente
Además de todo esto, también hay un escenario en el que se produce este error.
Cuando usted o su proyecto de biblioteca definen un atributo personalizado int attr.xml, y utiliza estos atributos en su archivo de diseño sin definir el espacio de nombres.
Generalmente usamos esta definición de espacio de nombres en el encabezado de nuestro archivo de diseño.
Luego, asegúrese de que todos los atributos en su archivo deben comenzar con
Debe identificar si parte de su attirbute no está comenzando con algo que no sea android: ATTRIBUTE-NAME como
En este caso, tiene este "temp" también como espacio de nombres, generalmente incluyendo-
fuente
Solo necesita agregar el espacio de nombre apropiado en su etiqueta raíz. xmlns: android = "http://schemas.android.com/apk/res/android" Los elementos Android se declaran en este espacio de nombre. Es lo mismo que importar la clase o el paquete.
fuente
Por lo general, me sucede cuando escribo mal Android: simplemente escribo andorid o similar, y no es obvio a primera vista, especialmente después de muchas horas de programación, así que solo busco "android" uno por uno y veo si la búsqueda omite uno etiqueta: si es así, lo miro de cerca y veo dónde estaba el error tipográfico.
fuente
Recibí este error en Xamarin cuando estaba usando
en un archivo de diseño sin instalar el paquete nuget para android.support.v7.widget.CardView
La instalación del paquete nuget aplicable solucionó el problema. Espero que ayude, no vi esta respuesta en ninguna parte de la lista
fuente