J'ai problème fréquent en vue 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>
xml
android
eclipse
android-linearlayout
Pentium10
la source
la source
Réponses:
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 devrait être
xmlns:android
2) Le premier nœud doit contenir:
xmlns:android="http://schemas.android.com/apk/res/android"
3) Si vous intégrez AdMob, vérifiez les paramètres personnalisés comme
ads:adSize
, vous avez besoinxmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
4) Si vous utilisez,
LinearLayout
vous devrez peut-être définir des outils:xmlns:tools="http://schemas.android.com/tools"
la source
Je vais ajouter une réponse séparée simplement parce que je ne la vois pas ici. Ce n'est pas à 100% ce que Pentium10 a demandé, mais je me suis retrouvé ici en cherchant
Error parsing XML: unbound prefix
Il s'avère que j'utilisais des paramètres personnalisés pour les annonces AdMob comme
ads:adSize
, mais je n'avais pas ajoutéà la mise en page. Une fois que je l'ai ajouté, cela a très bien fonctionné.
la source
J'ai eu le même problème.
Assurez-vous que le préfixe (android: [n'importe quoi]) 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 préfixe completxmlns:android
et qu'il est correctement orthographié. Même chose avec tous les autres préfixes - assurez-vous qu'ils sont correctement orthographiés et ontandroid:[name]
. C'est ce qui a résolu mon problème.la source
Comme vous le mentionnez, vous devez spécifier le bon espace de noms . Vous voyez également cette erreur avec un espace de noms incorrect.
ne fonctionnera pas.
la source
Cette erreur peut se produire dans le cas où vous utilisez un préfixe non défini tel que:
Le compilateur Android ne sait pas ce qu'est XYZ car il n'a pas encore été défini.
Dans votre cas, vous devez ajouter ci-dessous définir au nœud racine du fichier xml.
la source
Avec les balises d'en-tête suivantes dans votre parentLayout:
Ajoutez également:
Cela a fait l'affaire pour moi.
la source
Pour moi, j'ai eu l'erreur "préfixe non lié" sur la première ligne ici, bien que j'aie mal orthographié Android sur la quatrième ligne.
la source
J'ai eu le même problème et j'ai trouvé que la solution était d'ajouter les outils android: au premier nœud. Dans mon cas, c'est un LineraLayout:
la source
Je vais en ajouter un peu plus pour les débutants et pour les gens, comme moi, qui ne comprennent pas XML.
Les réponses ci-dessus sont plutôt bonnes, 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: Tout nom de balise XML qui a est une balise 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 différents pour interpréter le XML avec leurs propres noms de balise. Par exemple, Intel XDK utilise l'espace de noms intelxdk et android utilise android. Ainsi, vous avez besoin des espaces de noms suivants ou la génération génère du sang (c.-à-d. Erreur lors de l'analyse XML: préfixe non lié) qui se traduit par: Vous avez utilisé un espace de noms, mais ne l'avez pas défini.
la source
OK, il y a beaucoup de solutions ici mais n'expliquent pas réellement la cause première du problème alors allons-y:
lorsque vous voyez un attribut comme
android:layout_width="match_parent"
laandroid
pièce est le préfixe, le format d'un attribut est iciPREFIX:NAME="VALUE"
. en XML, les espaces de noms et les préfixes sont des moyens d'éviter les conflits de nommage par exemple, nous pouvons avoir deux attributs distincts avec le même nom mais des préfixes différents comme:a:a="val"
etb:a="val"
.pour utiliser des préfixes comme
android
ouapp
ou tout autre, vous devez définir un espace de noms à l'aide d'unxmlns
attribut.donc si vous avez ce problème, il suffit de trouver des préfixes qui n'ont pas d'espace de nom défini, si vous en avez,
tools:...
vous devez ajouter un espace de noms d'outils comme le suggèrent certaines réponses, si vous avez unapp:...
attribut, vous devez l'ajouterxmlns:app="http://schemas.android.com/apk/res-auto"
à l'élément racineLectures complémentaires:
Explication simple des espaces de noms XML
Espaces de noms XML dans W3
la source
Cette erreur se produit généralement si vous n'avez pas inclus
xmlns:mm
correctement, elle se produit généralement dans la première ligne de code.pour moi c'était ..
xmlns: mm = "http://millennialmedia.com/android/schema"
que j'ai raté en première ligne du code
la source
Dans mon cas, l'erreur n'a été causée par aucun des problèmes d'espace de noms xml ci-dessus. Au lieu de cela, c'était l'emplacement de l'
android:id
attribut - il devait être le premier élément de la déclaration de l'élément particulier.Donc ça:
... besoin de lire comme ceci:
la source
À côté de tout cela, il y a aussi un scénario où cette erreur se produit -
Lorsque vous ou votre projet de bibliothèque définissez l'attribut personnalisé int attr.xml, et que vous utilisez ces attributs dans votre fichier de disposition sans définir d'espace de noms.
Généralement, nous utilisons cette définition d'espace de noms dans l'en-tête de notre fichier de mise en page.
Assurez-vous ensuite que tous les attributs de votre fichier commencent par
Vous devez vous identifier si certains de vos attirbute ne commencent pas par autre chose que Android: ATTRIBUTE-NAME comme
Dans ce cas, vous avez également ce "temp" comme espace de noms, généralement en incluant-
la source
Vous avez juste besoin d'ajouter un espace de nom approprié dans votre balise racine. xmlns: android = "http://schemas.android.com/apk/res/android" Les elemets Android sont déclarés dans cet espace de noms. Cela équivaut à l'importation d'une classe ou d'un package.
la source
Cela m'arrive généralement lorsque j'orthographe mal Android - je tape simplement andorid ou similaire, et ce n'est pas évident à première vue, surtout après de nombreuses heures de programmation, donc je fais juste une recherche de "android" un par un et vois si la recherche en saute un tag - si c'est le cas, je regarde de près et je vois où était la faute de frappe.
la source
J'ai eu cette erreur dans Xamarin lorsque j'utilisais
dans un fichier de mise en page sans installer le package nuget pour android.support.v7.widget.CardView
L'installation du package nuget applicable a résolu le problème. J'espère que ça aide, je n'ai vu cette réponse nulle part dans la liste
la source