temas frecuentes que surgen en android ver, Error de análisis sintáctico de XML:independiente prefijo

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

Pregunta

Tengo problema frecuente en android ver, 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>
¿Fue útil?

Solución

Un par de razones por las que esto puede ocurrir:

1) ve este error con un espacio de nombres incorrecto, o un error tipográfico en el atributo.Como 'xmlns' es incorrecta, debe ser xmlns:android

2) el Primer nodo debe contener:xmlns:android="http://schemas.android.com/apk/res/android"

3) Si usted es la integración de AdMob, verificación de parámetros personalizados como ads:adSize, usted necesita

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

4) Si usted está utilizando LinearLayout usted podría tener que definir las herramientas:

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

Otros consejos

Voy a añadir una respuesta por separado sólo porque yo no lo veo aquí. No es 100% lo que Pentium10 pidió, pero terminó aquí mediante la búsqueda de Error parsing XML: unbound prefix

Resulta que yo estaba usando los parámetros personalizados para los anuncios de AdMob como ads:adSize, pero no me había añadido

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

para el diseño. Una vez añadí que funcionó muy bien.

he tenido este mismo problema.

Asegúrese de que el prefijo (android: [lo]) está escrita correctamente y escrito correctamente. En el caso de la línea de xmlns:android="http://schemas.android.com/apk/res/android" asegúrese de que tiene el prefijo xmlns:android completa y que esté escrita correctamente. Lo mismo pasa con cualquier otro prefijos - asegurarse de que están escritas correctamente y tienen android:[name]. Esto es lo que resolvió mi problema.

Como usted menciona, es necesario especificar el derecho espacio de nombres. También ve este error con un espacio de nombres incorrectos.

<?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 va a funcionar.

  

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 se inicia "android:" como el XML no sabe lo que el espacio de nombres "android:" es

.      

xmlns:android define.

Este error puede se produce en el caso de que utilice prefijo-un 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>

compilador de Android no sabe lo que es XYZ, ya que no se ha definido todavía.

En su caso, se debe añadir a continuación a definir nodo raíz del archivo XML.

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

  

error prefijo consolidar para Indicador ViewPager:

Junto con las siguientes etiquetas de cabecera en su parentLayout:

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

También añadir:

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

Esto hizo el truco para mí.

Para mí, tengo el error "prefijo no unido" en la primera línea de aquí, aunque había escrito mal androide 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"
>

Yo tenía el mismo problema, y se encontró que la solución fue agregar android:herramientas para el 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">

Voy a tirar un poco más para los novatos y para la gente como yo, que no entienden XML.

Las respuestas anteriores una muy buena, pero la respuesta general es que se necesita un espacio de nombres para cualquier espacio de nombres utilizado en el archivo config.xml.

Traducción: Cualquier nombre de etiqueta XML que tiene una etiqueta con un espacio de nombres donde bla es el espacio de nombres y fubar es la etiqueta XML. El espacio de nombres le permite utilizar muchas herramientas diferentes para interpretar el código XML con sus propios nombres de las etiquetas. Por ejemplo, Intel XDK utiliza el espacio de nombres y intelxdk Android utiliza Android. Por lo tanto se necesitan los siguientes espacios de nombres o la acumulación vomita sangre (es decir, un error de análisis XML: prefijo unido) que se traduce a: Utilizó un espacio de nombres, pero no se definen.

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

Este error suele producirse si no se ha incluido la xmlns:mm correctamente, se produce por lo general en la primera línea de código.

para mí fue ..

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

que echaba de menos en la 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" >

OK, hay un montón de soluciones aquí, pero no explican realmente la causa raíz del problema así que aquí vamos:

cuando aparezca un atributo como android:layout_width="match_parent" la parte android es el prefijo, el formato para un atributo aquí es PREFIX:NAME="VALUE". en XML, espacios de nombres y prefijos son formas de evitar conflictos de nombres, por ejemplo, podemos tener dos atributos distintos con el mismo nombre pero con diferentes prefijos como:. a:a="val" y b:a="val"

para utilizar prefijos como android o app o cualquier otro su debe definir un espacio de nombres utilizando el atributo xmlns.

por lo que si usted tiene este problema simplemente buscar prefijos que no tienen un espacio de nombres definido, si ha tools:... se debe añadir herramientas de espacio de nombres como sugirieron algunos answeres, si usted tiene app:... atributo se debe añadir xmlns:app="http://schemas.android.com/apk/res-auto" al elemento raíz

Más información:

espacios de nombres XML explicación simple

XML Los espacios de nombres en W3

En mi caso, el error no fue causada por cualquiera de los problemas de espacio de nombres XML anteriores. En cambio, era la ubicación del atributo android:id - que tenía que ser el primer elemento de 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" />

... necesario para leer la siguiente manera:

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

Además de todo esto, también hay un escenario donde occures este error -

Cuando usted o su proyecto de biblioteca definir atributos personalizados int attr.xml, y utiliza estos atributos en el archivo de diseño de espacio de nombres sin definir.

En general, utilizamos esta definición de espacio de nombres en la cabecera de nuestro archivo de diseño.

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

A continuación, asegúrese de que todos los atributos de su archivo deberían poner comienzan con

android:ATTRIBUTE-NAME

Es necesario identfy si algunos de sus attirbute no se inicia con algo más que el androide: nombre-atributo como

temp:ATTRIBUTE-NAME

En este caso usted tiene este "temp" también como espacio de nombres, por lo general mediante la inclusión -

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

Sólo tiene que añadir espacio de nombre propio en su etiqueta raíz. xmlns: android = "http://schemas.android.com/apk/res/android" elemets Android se declaran en este nombre space.Its mismos como la importación de clase o paquete.

Por lo general, sucede a mí cuando me escriben incorrectamente android - acabo de tipo de andorid o por igual, y no es obvio a primera vista, especialmente después de muchas horas de programación, por lo que acabo de hacer una búsqueda de "android" uno por uno y ver si de búsqueda salta una etiqueta - si lo hace, entonces tengo una mirada más de cerca y veo que fue error de tipeo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top