Domanda

Ho problema frequente in vista 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>
È stato utile?

Soluzione

Un paio di ragioni per cui questo può accadere:

1) Si vede questo errore con uno spazio dei nomi non corretto o un errore di battitura nel attributo. Come 'xmlns' è sbagliato, dovrebbe essere xmlns:android

2) Primo nodo deve contenere: xmlns:android="http://schemas.android.com/apk/res/android"

3) Se si integra AdMob, controllare i parametri personalizzati come ads:adSize, è necessario

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

4) Se si sta utilizzando LinearLayout potrebbe essere definire strumenti:

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

Altri suggerimenti

ho intenzione di aggiungere una risposta separata solo perché non vedo qui. Non è al 100% ciò che Pentium10 chiesto, ma ho finito qui la ricerca di Error parsing XML: unbound prefix

venuto fuori che stava usando parametri personalizzati per gli annunci AdMob come ads:adSize, ma non avevo aggiunto

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

per il layout. Una volta ho aggiunto ha funzionato grande.

Ho avuto questo stesso problema.

Assicurarsi che il prefisso (Android: [qualunque cosa]) sia stato digitato correttamente e scritto in modo corretto. Nel caso della linea xmlns:android="http://schemas.android.com/apk/res/android" assicurarsi di avere il pieno xmlns:android prefisso e che sia stato digitato correttamente. Stessa cosa con tutti gli altri prefissi - assicurarsi che siano state digitate correttamente e hanno android:[name]. Questo è ciò che ha risolto il mio problema.

Come si parla, è necessario specificare il namespace destra . Si vede anche questo errore con uno spazio dei nomi corretto.

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

non funzionerà.

  

Modifica:

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

a

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

Il messaggio di errore si riferisce a tutto ciò che inizia "android:" come XML non sa cosa lo spazio dei nomi "android:" è

.      

xmlns:android definisce.

Questo errore può si verifica nel caso in cui si utilizzi un prefisso definito come:

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

compilatore Android non sa cosa è XYZ in quanto non è stato ancora definito.

Nel tuo caso, si dovrebbe aggiungere sotto definire di radicare nodo del file xml.

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

  

errore prefisso nessun impegno per Indicatore ViewPager:

Insieme con i seguenti tag di intestazione nel parentLayout:

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

Anche aggiungere:

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

Questo ha fatto il trucco per me.

Per quanto mi riguarda, ho avuto l'errore "non legato prefisso" sulla prima linea qui, anche se avevo scritto male di Android sulla quarta linea.

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

Ho avuto lo stesso problema, e ha scoperto che la soluzione era quella di aggiungere l'androide: strumenti al primo nodo. Nel mio caso si tratta di 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">

mi butto in un po 'di più per i principianti e per la gente, come me, che non capiscono XML.

Le risposte di sopra di una abbastanza buona, ma la risposta generale è che avete bisogno di uno spazio dei nomi per qualsiasi spazio dei nomi utilizzato nel file config.xml.

Traduzione: Qualsiasi nome di tag XML che ha è un tag con uno spazio dei nomi in cui bla è lo spazio dei nomi e fubar è il tag XML. Il namespace consente di utilizzare molti strumenti diversi per interpretare il codice XML con i loro nomi dei tag. Ad esempio, Intel XDK utilizza lo spazio dei nomi e intelxdk Android utilizza Android. Quindi sono necessari i seguenti spazi dei nomi o l'accumulo vomita sangue (vale a dire Errore analisi XML: prefisso non legata), che viene tradotto in: È stato utilizzato uno spazio dei nomi, ma non lo definisce.

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

Questo errore si verifica se non si è inserito il xmlns:mm correttamente, si verifica di solito nella prima riga di codice.

per me è stato ..

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

:

che ho perso nella prima riga del codice

<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, ci sono un sacco di soluzioni qui, ma non in realtà spiegano la causa principale del problema in modo da qui andiamo:

quando si vede un attributo come android:layout_width="match_parent" la parte android è il prefisso, il formato per un attributo qui è PREFIX:NAME="VALUE". in XML, i namespace e prefissi sono modi per evitare conflitti di denominazione per esempio possiamo avere due attributi distinti con lo stesso nome ma diversi prefissi come:. a:a="val" e b:a="val"

di utilizzare prefissi come android o app o qualsiasi altro vostro deve definire uno spazio dei nomi mediante l'attributo xmlns.

quindi se avete questo problema basta trovare prefissi che non hanno un namespace definito, se avete tools:... si dovrebbe aggiungere strumenti namespace come alcuni answeres suggerito, se avete app:... attributo si dovrebbe aggiungere xmlns:app="http://schemas.android.com/apk/res-auto" all'elemento radice

Per ulteriori approfondimenti:

namespace XML semplice spiegazione

XML Namespace in W3

Nel mio caso l'errore non è stato causato da uno dei problemi xml namespace di cui sopra. Invece era la posizione dell'attributo android:id - aveva bisogno di essere il primo elemento nella dichiarazione del particolare elemento.

Quindi questo:

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

... necessario per leggere in questo modo:

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

Oltre a tutto questo, c'è anche uno scenario in cui questo errore occures -

Quando voi o il vostro progetto di libreria definire personalizzato attributo int attr.xml, e si utilizzano questi attributi nel file di layout senza definire namespace.

In genere si usa questa definizione dello spazio dei nomi nell'intestazione del nostro file di layout.

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

Quindi assicurarsi che tutti gli attributi nel file shoud iniziano con

android:ATTRIBUTE-NAME

È necessario identfy se alcuni dei vostri attirbute non parte con qualcosa di diverso Android: nome_attributo come

temp:ATTRIBUTE-NAME

In questo caso si dispone di questo "temp" anche come spazio dei nomi, in genere includendo -

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

Hai solo bisogno di aggiungere il corretto spazio nome nel tag root. xmlns: Android = "http://schemas.android.com/apk/res/android" elemets Android sono dichiarate in questo nome space.Its stessi come l'importazione di classe o un pacchetto.

Di solito succede a me quando ho Misspell Android - mi basta digitare Andorid o simili, e non è evidente a prima vista soprattutto dopo molte ore di programmazione, quindi mi basta fare una ricerca per "Android" uno per uno e vedere se Ricerca salta un tag -. se lo fa allora ho uno sguardo da vicino e vedo dove era errore di battitura

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top