частые проблемы, возникающие в представлении android, ошибка синтаксического анализа XML: несвязанный префикс

у меня частые проблемы в Android view,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>

15 ответов


пару причин, по которым это может произойти:

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) Если вы используете LinerLayout, вам может потребоваться определить tools

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


Я хочу добавить отдельный ответ только потому, что я не вижу его здесь. Это не 100% то, что попросил Pentium10, но я оказался здесь, ища Error parsing XML: unbound prefix

оказывается, я использовал пользовательские параметры для объявлений AdMob, таких как ads:adSize, но я не добавил

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

в макет. Как только я добавил его, он отлично работал.


у меня была такая же проблема.

убедитесь,что префикс (android: [whatever]) написан правильно и правильно. В случае линии xmlns:android="http://schemas.android.com/apk/res/android" убедитесь, что у вас есть полный префикс xmlns:android и что это правильно. То же самое с любыми другими префиксами - убедитесь, что они написаны правильно и имеют android:[name]. Вот что решило мою проблему.


как вы упомянули, вам нужно указать правое пространство имен. Вы также видите эту ошибку с неправильным пространством имен.

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

to

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

сообщение об ошибке относится ко всему, что запускает " android:", поскольку XML не знает, что такое"android:" пространство имен.

xmlns:android определяет он.


эта ошибка может возникнуть в случае использования неопределенного префикса, например:

<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, так как он еще не был определен.

в вашем случае вы должны добавить ниже define в корневой узел xml-файла.

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


ошибка несвязанного префикса для Индикатор 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"

Это сделал трюк для меня.


для меня я получил ошибку "unbound prefix" на первой строке здесь, хотя я ошибся в android на четвертой строке.

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

У меня была та же проблема, и я обнаружил, что решением было добавить 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">

Я добавлю немного больше для новичков и для людей, таких как я, которые не понимают XML.

ответы выше довольно хорошие, но общий ответ заключается в том, что вам нужно пространство имен для любого пространства имен, используемого в конфигурации.XML-файл.

Translation: любое имя XML-тега, которое имеет тег с пространством имен, где blah-это пространство имен, а FUBAR-это XML-тег. Пространство имен позволяет использовать множество различных инструментов для интерпретации XML с их собственными именами тегов. Для например, Intel XDK использует пространство имен intelxdk, а android - android. Таким образом, вам нужны следующие пространства имен или сборка выбрасывает кровь (т. е. ошибка синтаксического анализа XML: unbound prefix), которая переводится в: вы использовали пространство имен, но не определили его.

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

эта ошибка обычно возникает, если вы не включили 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" >

в моем случае ошибка не была вызвана какой-либо из вышеупомянутых проблем пространства имен 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" />

кроме всего этого, есть также сценарий, где эта ошибка происходит -

когда вы или ваш проект библиотеки определяете пользовательский атрибут int attr.xml, и вы используете эти атрибуты в файле макета без определения пространства имен .

как правило, мы используем это определение пространства имен в заголовке файла макета.

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

затем убедитесь, что все атрибуты в файле должен начинаться с

android:ATTRIBUTE-NAME

вам нужно identfy если некоторые из ваших attirbute не начиная с чего-то другого, кроме android:ATTRIBUTE-NAME like

temp:ATTRIBUTE-NAME

в этом случае у вас есть этот "temp" также как пространство имен, как правило, путем включения-

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

вам просто нужно добавить собственное пространство имен в корневой тег . xmlns: android="http://schemas.android.com/apk/res/android" В этом пространстве имен объявлены элементы Android.Это то же самое, что и импорт класса или пакета.


Это обычно бывает со мной, когда я сделал ошибку в андроиде я просто типа Андроид, или, и это не очевидно на первый взгляд, особенно после долгих часов программирования, так что я просто выполните поиск для "андроид" по одному и посмотреть, если поиск пропускает один тег - если это так, то я поближе и вижу, где опечатка.


хорошо, здесь есть много решений, но на самом деле не объясняют основную причину проблемы, поэтому здесь мы идем:

когда вы видите атрибут как android:layout_width="match_parent" на android часть-это префикс, формат атрибута здесь PREFIX:NAME="VALUE". в XML, пространства имен и префиксы способы, чтобы избежать конфликтов имен, например, мы можем иметь две различные атрибуты с одинаковыми именами, но разными префиксами, как: a:a="val" и b:a="val".

использовать префиксы типа android или app или любой другой ваш должен определить пространство имен, используя .

поэтому, если у вас есть эта проблема, просто найдите префиксы, у которых нет определенного пространства имен, если у вас есть tools:... вы должны добавить пространство имен инструментов, как некоторые ответы, если у вас есть app:... атрибут вы должны добавить xmlns:app="http://schemas.android.com/apk/res-auto" корневой элемент

читайте далее:

пространства имен XML простое объяснение

пространства имен XML в В3