Подтвердить что ты не робот

Что означает несвязанный префикс при анализе XML?

Я сделал xml файл в своем приложении для Android для Custom Widget, и ошибка:

Анализ ошибок 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.

4b9b3361

Ответ 1

Второе пространство имен 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"

Ответ 2

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

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.myproject.winedeals"
 .....
 .....>

Ответ 3

Возьмите второе объявление пространства имен 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>