Что означает несвязанный префикс при разборе XML? - PullRequest
13 голосов
/ 13 июня 2011

Я сделал XML-файл в своем приложении для Android для пользовательского виджета, и ошибка:

Ошибка синтаксического анализа XML: несвязанный префикс

Вот мой xml-файл:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.example.CustomWidget.MyView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"

        android:id="@+id/surface"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:layout_weight="1"/>

</LinearLayout>

com.example.CustomWidget - это имя моего пакета, а MyView - имя моего файла класса, в котором я создал пользовательский Widget.

Ответы [ 3 ]

24 голосов
/ 04 ноября 2011

Второе пространство имен XML правильное, однако это пространство имен вашего пользовательского виджета, поэтому вам нужно соответствующим образом определить пространство имен:

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

становится:

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

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

mynamespace:my_defined_attribute="success"

вместо:

android:layout_width="fill_parent"
5 голосов
/ 21 декабря 2013

В вашем XML-файле вы должны добавить строку:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.myproject.winedeals"
 .....
 .....>
0 голосов
/ 15 июня 2011

Возьмите вторую декларацию пространства имен XML:

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent">
   <com.example.CustomWidget.MyView
     android:id="@+id/surface
     android:layout_width="fill_parent"
     android:layout_height="fill_parent" 
     android:layout_weight="1"
     android:focusable="true"
     android:focusableInTouchMode="true"  />
</LinearLayout>
...