частые проблемы, возникающие в представлении 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"
корневой элемент
читайте далее: