nombres - problemas frecuentes que surgen en la vista de Android, Error al analizar XML: prefijo no enlazado
el prefijo del espacio de nombres no está definido (15)
error de prefijo no vinculado para el indicador de ViewPager:
Junto con las siguientes etiquetas de encabezado en su parentLayout:
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
También agregue:
xmlns:app="http://schemas.android.com/apk/res-auto"
Esto hizo el truco para mí.
Tengo un problema frecuente en la vista de Android, 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>
Además de todo esto, también existe 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.
xmlns:android="http://schemas.android.com/apk/res/android"
Luego asegúrese de que todos los atributos en su archivo deben comenzar con
android:ATTRIBUTE-NAME
Debe identificar si parte de su attirbute no comienza con otra cosa que no sea android: ATTRIBUTE-NAME como
temp:ATTRIBUTE-NAME
En este caso, tiene esta "temperatura" también como espacio de nombres, generalmente al incluir:
xmlns:temp="http://schemas.android.com/apk/res-auto"
Como mencionaste, necesitas especificar el espacio de nombres correcto . También ve este error con un espacio de nombres incorrecto.
<?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">
no trabajará.
Cambio:
xmlns="http://schemas.android.com/apk/res/android"
a
xmlns:android="http://schemas.android.com/apk/res/android"
El mensaje de error se refiere a todo lo que comienza con "android:" ya que el XML no sabe qué es el espacio de nombres "
android:
".
xmlns:android
define.
De acuerdo, hay muchas soluciones aquí, pero en realidad no explican la causa del problema, así que aquí vamos:
cuando vea un atributo como android:layout_width="match_parent"
la parte de android
es el prefijo, el formato para un atributo aquí es PREFIX: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 prefijos diferentes como: a:a="val"
y b:a="val"
.
para usar prefijos como android
app
o cualquier otro, debe definir un espacio de nombres usando el atributo xmlns
.
así que si tiene este problema, simplemente busque los prefijos que no tengan un espacio de nombres definido, si tiene tools:...
debe agregar el espacio de nombres de las herramientas como se sugiere en algunas respuestas, si tiene la app:...
atributo, debe agregar xmlns:app="http://schemas.android.com/apk/res-auto"
al elemento raíz
Otras lecturas:
En mi caso, el error no fue causado por ninguno de los problemas de espacio de nombres xml anteriores. En su lugar, era la ubicación del atributo android:id
tenía que ser el primer elemento en la declaración del elemento en particular.
Así que esto:
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/bottomtext"
android:singleLine="true" />
... necesitaba leer así:
<TextView android:id="@+id/bottomtext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true" />
Este error generalmente ocurre si no ha incluido los 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 primera línea del código
<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" >
Este error puede ocurrir en el caso de que use un prefijo no definido como:
<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>
El compilador de Android no sabe qué es XYZ ya que aún no estaba definido.
En su caso, debe agregar a continuación definir al nodo raíz del archivo xml.
xmlns:android="http://schemas.android.com/apk/res/android"
Para mí, recibí el error de "prefijo no enlazado" en la primera línea aquí, aunque había escrito incorrectamente Android en la cuarta línea.
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
anrdoid:fillViewport="true"
>
Por lo general, me sucede cuando escribo incorrectamente el 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 hago una búsqueda de "android" una por una y veo si la búsqueda salta una. etiqueta: si es así, tengo una mirada de cerca y veo dónde estaba el error tipográfico.
Solo necesitas agregar un espacio de nombre apropiado en tu etiqueta de raíz. xmlns: android = "http://schemas.android.com/apk/res/android" Los elementos de Android se declaran en este espacio de nombres. Es lo mismo que importar clase o paquete.
Tuve el mismo problema y encontré que la solución era agregar el android: tools al primer nodo. En mi caso es un 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">
Un par de razones por las que esto puede suceder:
1) Ve 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 los parámetros personalizados como los ads:adSize
, necesita
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
4) Si está utilizando LinearLayout
es posible que tenga que definir herramientas:
xmlns:tools="http://schemas.android.com/tools"
Voy a agregar 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 etiqueta. 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 no enlazado) que se traduce a: Usted usó un espacio de nombres, pero no lo definió.
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:intelxdk="http://xdk.intel.com/ns/v1"
Voy a agregar una respuesta separada solo porque no la veo aquí. No es 100% lo que solicitó 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 agregado
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
a la disposición. Una vez que lo agregué funcionó muy bien.
Yo tuve el mísmo problema.
Asegúrese de que el prefijo (android: [lo que sea]) esté escrito correctamente. En el caso de la línea xmlns:android="http://schemas.android.com/apk/res/android"
asegúrese de tener el prefijo completo xmlns:android
y de que esté escrito correctamente. Lo mismo con cualquier otro prefijo: asegúrese de que estén escritos correctamente y que tengan android:[name]
. Esto es lo que resolvió mi problema.