web-dev-qa-db-ja.com

Androidビューで広範囲に発生する問題、XMLの解析エラー:未バインドプレフィックス

私は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>
286
Pentium10

これが起こり得る2つの理由:

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"

531
Pentium10

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

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

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

レイアウトへ。それを追加したら、それはとてもうまくいった。

100
MalcolmOcean

私はこれと同じ問題を抱えていました。

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

62
Daniel

おっしゃるとおり、 正しい名前空間 を指定する必要があります。また、間違った名前空間でこのエラーが表示されます。

<?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がそれを定義します。

30
VonC

このエラーは、次のような未定義のプレフィックスを使用した場合に発生する可能性があります。

<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ファイルのルートノードに下記のdefineを追加する必要があります。

xmlns:Android="http://schemas.Android.com/apk/res/Android"
23

ViewPager Indicator:のアンバインドプレフィックスエラー

あなたの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"

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

10
amalBit

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

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

私は同じ問題を抱えていて、解決策は最初のノードに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">
7
Sebastian Breit

私は私のように、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
turbogeek

OK、ここにはたくさんの解決策がありますが、実際には問題の根本的な原因を説明していないので、ここで行きます。

Android:layout_width="match_parent"のような属性が表示されている場合、Androidの部分が接頭辞であり、ここでの属性のフォーマットはPREFIX:NAME="VALUE"です。 XMLでは、名前空間と接頭辞は、名前の競合を避けるための方法です。たとえば、a:a="val"b:a="val"のように、名前は同じで接頭辞が異なる2つの異なる属性を持つことができます。

Androidappなどのプレフィックスを使用するには、xmlns属性を使用して名前空間を定義する必要があります。

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

参考文献:

XML名前空間の簡単な説明

W3のXML名前空間

2
mohas

このエラーは通常、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" >
2
Kailas

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

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

通常、この名前空間定義をレイアウトファイルのヘッダーに使用します。

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

それから、ファイル内のすべての属性がで始まることを確認してください。

Android:ATTRIBUTE-NAME

属性のいくつかがAndroid以外のもので始まっていない場合は、識別する必要があります。ATTRIBUTE-NAME like

temp:ATTRIBUTE-NAME

この場合、あなたはこの "temp"を名前空間としても持っています。

xmlns:temp="http://schemas.Android.com/apk/res-auto"
1
Anuj Garg

私の場合、エラーは上記の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
okredo

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

1
Gevaria Purva

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

0
Nenad Bulatovic