Androidビューで頻繁に発生する問題、XMLの解析エラー:バインドされていないプレフィックス


296

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>

9
これについて投稿されたすべての回答を確認してください。それらはすべて有効です。問題はXML名前空間と、それがひどく間違っているいくつかの方法です。
whitey04

最初の行でALLのコメントを省略したことを忘れても、レイアウトに問題があることに気付かないこともあります(<?xml version = "1.0" encoding = "utf-8"? > <!-ALLsuppress->)
マイク

回答:


555

これが発生する可能性があるいくつかの理由:

1)このエラーは、誤ったネームスペース、または属性のタイプミスで発生します。「xmlns」が間違っているように、それはxmlns:android

2)最初のノードは以下を含む必要があります: xmlns:android="http://schemas.android.com/apk/res/android"

3)AdMobを統合する場合は、カスタムパラメータを確認しads:adSizeます。

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

4)使用しているLinearLayout場合は、ツールを定義する必要があります。

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


「最初のノード」とはどういう意味ですか?元の質問では、TextViewですか?
David Doria

1
...と、新しいGoogle PlayでのAdMobの中でそれはです:のxmlns:広告= " schemas.android.com/apk/res-auto "
user1010160

どうもありがとう、私はこのラインのxmlnsを追加することにより、ケース3には、私の問題を解決:広告=「schemas.android.com/apk/lib/com.google.ads答えは」1
Shylendra Madda

101

ここに表示されていないという理由だけで、別の回答を追加します。Pentium10が要求したものは100%ではありませんが、検索してここに到達しましたError parsing XML: unbound prefix

のようなAdMob広告にカスタムパラメータを使用していたことがわかりましたがads:adSize、追加していませんでした

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

レイアウトに。一度追加すると、うまくいきました。


63

私も同じ問題を抱えていました。

接頭辞(android:[whatever])のスペルが正しく、正しく記述されていることを確認してください。行のxmlns:android="http://schemas.android.com/apk/res/android" 場合は、完全なプレフィックスがxmlns:androidあり、スペルが正しいことを確認してください。他の接頭辞と同じ-それらが正しくつづられていることを確認してくださいandroid:[name]。これが私の問題を解決したものです。


1
はい、私の場合、エラーはandroi:src = "@ drawable / half"が原因でした-これは明らかに間違っていました!
IgorGanapolsky

はい、同じ問題がありました。「xmln:」の部分もありませんでした。
user1032613

32

おっしゃるように、正しい名前空間を指定する必要があります。名前空間が正しくない場合にもこのエラーが表示されます。

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

動作しないでしょう。

変化する:

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

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

XMLは " android:"名前空間が何であるかを認識していないため、エラーメッセージは "android:"で始まるすべてのものを参照しています。

xmlns:android それを定義します。


23

このエラーは、次のような未定義の接頭辞を使用した場合に発生することがあります。

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

まだ定義されていないため、AndroidコンパイラーはXYZが何であるかを知りません。

あなたの場合、xmlファイルのルートノードに以下の定義を追加する必要があります。

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


2
これは私のためにそれをやった。それは不完全なタイプミスでした:android:layout_weightの代わりに、私はanrdoid:layout_weigthと入力しました。
Yahel

グエン、XYZの定義方法は?ありがとう
Anatoliy Shuba

10

ViewPagerインジケーターのバインドされていないプレフィックスエラー

parentLayoutの次のヘッダータグとともに:

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

また追加:

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

これは私にとってはトリックでした。


9

私にとって、最初の行に「unbound prefix」エラーが表示されましたが、4行目でandroidのスペルを間違えていました。

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

7

同じ問題があり、解決策は最初のノードにandroid:toolsを追加することであることがわかりました。私の場合、それは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">

はい、ツールを参照するが、ツールの名前空間を追加しない場合は、これも取得します。
Ferrol Blackmon博士、2013年

3

初心者や、私のようにXMLを理解していない人のために、もう少し詳しく説明します。

上記の答えはかなり良いですが、一般的な答えは、config.xmlファイルで使用される名前空間には名前空間が必要であるということです。

変換:があるXMLタグ名は、名前空間が付いたタグで、blahが名前空間でfubarがXMLタグです。名前空間を使用すると、さまざまなツールを使用して、XMLを独自のタグ名で解釈できます。たとえば、Intel XDKは名前空間intelxdkを使用し、androidはandroidを使用します。したがって、次の名前空間が必要です。そうでない場合、ビルドは血に翻訳されます(つまり、XMLの解析エラー:バインドされていない接頭辞)。これは次のように変換されます。

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

3

わかりました。ここには多くの解決策がありますが、実際には問題の根本的な原因を説明していないため、次のようにします。

あなたが見たときのような属性の部分は接頭辞で、ここでは属性の形式です。XMLで、名前空間接頭辞とは、我々は次のように2つの同じ名前の明確な属性が異なるプレフィックスを持つことができますたとえば、命名の競合を避けるための方法があります。と。android:layout_width="match_parent"androidPREFIX:NAME="VALUE"a:a="val"b:a="val"

以下のような接頭辞を使用するandroidか、appまたは任意の他のことはあなたの使って名前空間を定義する必要があるxmlns属性を。

したがって、この問題がある場合は、名前空間が定義されていないプレフィックスを見つけるだけです。回答があるtools:...場合は、ツールの名前空間をapp:...追加xmlns:app="http://schemas.android.com/apk/res-auto"する必要があります。属性がある場合は、ルート要素に追加する必要があります。

参考文献:

XML名前空間の簡単な説明

W3のXML名前空間


2

このエラーは通常、xmlns:mm適切にインクルードしていない場合に発生し、通常はコードの最初の行で発生します。

私にとっては…

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

コードの最初の行で逃したこと

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

1

私の場合、エラーの原因は上記のxml名前空間の問題ではありませんでした。代わりに、それはandroid:id属性の場所でした-特定の要素の宣言の最初の項目である必要がありました。

したがって、この:

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

...このように読む必要がありました:

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

1

これ以外にも、このエラーが発生するシナリオがあります-

あなたまたはあなたのライブラリプロジェクトがカスタム属性int attr.xmlを定義するとき、そしてこれらの属性を名前空間を定義せずにレイアウトファイルで使用します。

通常、このネームスペース定義は、レイアウトファイルのヘッダーで使用します。

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

次に、ファイル内のすべての属性が次で始まることを確認してください

android:ATTRIBUTE-NAME

あなたのattirbuteの一部がandroid:ATTRIBUTE-NAMEのようなもの以外で始まっていないかどうかを識別する必要があります

temp:ATTRIBUTE-NAME

この場合、通常は次のようにして、この「temp」もネームスペースとして持っています。

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

1

ルートタグに適切な名前空間を追加するだけです。xmlns:android = "http://schemas.android.com/apk/res/android" Androidエレメントは、この名前空間で宣言されます。これは、クラスまたはパッケージのインポートと同じです。


0

私は通常、androidのスペルを間違えたときに発生します-andoridなどを入力するだけで、特に何時間ものプログラミングをした後では一目瞭然ではないので、「android」を1つずつ検索して、検索が1つスキップするかどうかを確認しますタグ-もしそうなら、私はよく見て、どこにタイプミスがあったかがわかります。


0

私が使用していたときにXamarinでこのエラーが発生しました

  <android.support.v7.widget.CardView  
    android:layout_width="match_parent"  
    android:layout_height="wrap_content"  
    card_view:cardElevation="4dp"  
    card_view:cardCornerRadius="5dp"  
    card_view:cardUseCompatPadding="true">  
  </android.support.v7.widget.CardView>

android.support.v7.widget.CardViewのnugetパッケージをインストールせずにレイアウトファイル内

該当するnugetパッケージをインストールすると、問題が修正されました。それが役に立てば幸い、私はこの答えをリストのどこにも見なかった

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.