Question

J'ai un problème fréquent dans Android vue, 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>
Était-ce utile?

La solution

Quelques raisons pour lesquelles cela peut se produire:

1) Vous voyez cette erreur avec un espace de noms incorrect, ou une faute de frappe dans l'attribut. Comme 'xmlns' est faux, il doit être xmlns:android

2) Premier noeud doit contenir: xmlns:android="http://schemas.android.com/apk/res/android"

3) Si vous intégrez AdMob, vérifier les paramètres personnalisés comme ads:adSize, vous avez besoin

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

4) Si vous utilisez LinearLayout vous pourriez avoir à définir des outils:

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

Autres conseils

Je vais ajouter une réponse séparée juste parce que je ne vois pas ici. Ce n'est pas 100% ce Pentium10 demandé, mais je me suis retrouvé ici en recherchant Error parsing XML: unbound prefix

Il se trouve que j'utilisais des paramètres personnalisés pour les annonces AdMob comme ads:adSize, mais je ne l'avais pas ajouté

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

à la mise en page. Une fois que je l'ai ajouté qu'il fonctionnait très bien.

J'ai eu ce même problème.

Assurez-vous que le préfixe (Android: [tout]) est correctement orthographié et écrit correctement. Dans le cas de la ligne xmlns:android="http://schemas.android.com/apk/res/android" assurez-vous que vous avez le plein préfixe xmlns:android et qu'il est correctement orthographié. Même avec tous les autres préfixes - assurez-vous qu'ils sont correctement orthographiés et ont android:[name]. C'est ce qui a résolu mon problème.

Comme vous le mentionnez, vous devez spécifier le namespace droit. Vous voyez également cette erreur avec un espace de noms incorrect.

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

ne fonctionnera pas.

  

Changement:

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

à

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

Le message d'erreur se réfère à tout ce qui commence « android: » espace de noms comme XML ne sait pas ce que le « android: » est

.      

xmlns:android définit.

Cette erreur peut se produit dans le cas où vous utilisez un préfixe défini comme:

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

compilateur Android ne sait pas ce qui est XYZ car il n'a pas été encore défini.

Dans votre cas, vous devez ajouter ci-dessous définir au nœud racine du fichier xml.

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

  

erreur préfixe non consolidé pour ViewPager Indicateur:

Avec les balises d'en-tête suivants dans votre parentLayout:

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

Ajoutez également:

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

a fait l'affaire pour moi.

Pour moi, je me suis le « préfixe non consolidé » erreur sur la première ligne, bien que je l'avais mal orthographié android sur la quatrième ligne.

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

J'ai eu le même problème, et a constaté que la solution était d'ajouter l'androïde: outils au premier noeud. Dans mon cas, il est 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">

Je vais jeter un peu plus pour les débutants et pour les gens, comme moi, qui ne comprennent pas XML.

Les réponses ci-dessus une assez bonne, mais la réponse générale est que vous avez besoin d'un espace de noms pour tout espace de noms utilisé dans le fichier config.xml.

Traduction: Tous les noms de balise XML qui a une étiquette avec un espace de noms où blah est l'espace de noms et fubar est la balise XML. L'espace de noms vous permet d'utiliser de nombreux outils pour interpréter le XML avec leurs propres noms de balises. Par exemple, Intel XDK utilise l'espace de noms intelxdk et Android utilise Android. Ainsi, vous avez besoin des espaces de noms suivants ou l'accumulation vomit du sang (à savoir XML parsing d'erreur: préfixe non consolidé) qui est traduit à: Vous avez utilisé un espace de noms, mais ne l'a pas défini.

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

Cette erreur se produit généralement si vous n'avez pas inclus le xmlns:mm correctement, il se produit habituellement dans la première ligne de code.

pour moi il était ..

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

i qui manquait dans la première ligne du code

<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, il y a beaucoup de solutions ici, mais non expliquent en réalité la cause racine du problème, donc on y va:

quand vous voyez un attribut comme android:layout_width="match_parent" la partie android est le préfixe, le format d'un attribut est ici PREFIX:NAME="VALUE". en XML, et préfixes namespaces sont des moyens d'éviter les conflits de noms par exemple, nous pouvons avoir deux attributs distincts avec le même nom mais différents préfixes comme:. a:a="val" et b:a="val"

pour utiliser des préfixes comme android ou app ou tout autre votre devrait définir un espace de noms en utilisant l'attribut xmlns.

donc si vous avez ce problème trouver simplement préfixes qui ne disposent pas d'un espace de nom défini, si vous avez tools:... vous devez ajouter l'espace de noms d'outils comme certains answeres suggéré, si vous avez app:... attribut vous devez ajouter xmlns:app="http://schemas.android.com/apk/res-auto" à l'élément racine

Pour en savoir plus:

XML Namespaces explication simple

XML dans les espaces de noms W3

Dans mon cas, l'erreur n'a pas été causée par l'un des problèmes d'espace de noms XML ci-dessus. Au contraire, il était l'emplacement de l'attribut android:id - il devait être le premier élément dans la déclaration de l'élément particulier.

Alors ceci:

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

... nécessaire pour lire comme ceci:

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

En plus de tout cela, il y a aussi un scénario où cette erreur a lieu -

Lorsque vous ou votre projet de bibliothèque définir attr.xml int attribut personnalisé, et que vous utilisez ces attributs dans votre fichier de mise en page sans définir l'espace de noms.

En général, nous utilisons cette définition d'espace de noms en tête de notre fichier de mise en page.

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

Ensuite, assurez-vous que tous les attributs de votre fichier shoud commencent par

android:ATTRIBUTE-NAME

Vous devez identfy si certains de vos attirbute ne démarre pas avec autre chose que Android: nom_attribut comme

temp:ATTRIBUTE-NAME

Dans ce cas, vous avez cette « temp » aussi comme espace de noms, généralement en incluant -

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

Il vous suffit d'ajouter de l'espace de nom propre dans votre balise racine. xmlns: android = "http://schemas.android.com/apk/res/android" elemets Android sont déclarés dans ce nom space.Its même que la classe importation ou l'emballage.

Il arrive souvent à moi quand je mal orthographié android - Je viens de taper andorid ou similaire, et il est pas évident à première vue surtout après de nombreuses heures de programmation, donc je fais juste une recherche pour « android » un par un et voir si recherche saute une étiquette -. si elle fait alors je regarde près et je vois où était faute de frappe

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top