Обнаружен неожиданный префикс пространства имен xmlns для тега LinearLayout

У меня ошибка в следующем файле xml. "Для тега LinearLayout обнаружен неожиданный префикс пространства имен "xmlns"". Я пробовал решения, представленные в других подобных вопросах, но это не сработало для меня. Та же ошибка возникает в 3 строках, где используется LinearLayout.

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/background" >

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/menu_top_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/name_version"
            android:textColor="@color/black"
            android:textSize="20sp" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >
        </LinearLayout>

        <!-- A horizontal line -->

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="30px" >
        </FrameLayout>

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:orientation="vertical" >

            <LinearLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:orientation="horizontal" >

                <Button
                    android:id="@+id/start_stop_button"
                    android:layout_width="74dp"
                    android:layout_height="74dp"
                    android:text="@string/start_server" />

                <Button
                    android:id="@+id/instructions"
                    android:layout_width="120dp"
                    android:layout_height="74dp"
                    android:text="@string/instructions_label" />

                <Button
                    android:id="@+id/setup"
                    android:layout_width="74dp"
                    android:layout_height="74dp"
                    android:text="@string/setup_label" />
            </LinearLayout>
        </LinearLayout>

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="30px" >
        </FrameLayout>

        <!-- A horizontal line -->

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="1px"
            android:background="#666666" >
        </FrameLayout>

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="10px" >
        </FrameLayout>

        <TableLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:shrinkColumns="2" >

            <TableRow>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="left"
                    android:text="@string/server_status"
                    android:textColor="@color/black"
                    android:textSize="16sp" />
                <!-- A small spacer between the columns -->

                <FrameLayout
                    android:layout_width="3sp"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/server_status"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/unknown"
                    android:textColor="@color/black"
                    android:textSize="16sp" />
            </TableRow>
        </TableLayout>

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="10px" >
        </FrameLayout>

        <!-- A horizontal line -->

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="1px"
            android:background="#666666" >
        </FrameLayout>

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="10px" >
        </FrameLayout>

        <TableLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:shrinkColumns="2" >

            <TableRow>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="left"
                    android:text="@string/my_url_is"
                    android:textColor="@color/black"
                    android:textSize="16sp" />
                <!-- A small spacer between the columns -->

                <FrameLayout
                    android:layout_width="3sp"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/ip_address"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/no_url_yet"
                    android:textColor="@color/black"
                    android:textSize="16sp" />
            </TableRow>

            <TableRow>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="left"
                    android:text="@string/wifi_status"
                    android:textColor="@color/black"
                    android:textSize="16sp" />
                <!-- A small spacer between the columns -->

                <FrameLayout
                    android:layout_width="3sp"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/wifi_status"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/unknown"
                    android:textColor="@color/black"
                    android:textSize="16sp" />
            </TableRow>

            <TableRow>

                <TextView
                    android:id="@+id/last_error_label"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="left"
                    android:text="@string/last_error"
                    android:textSize="16sp"
                    android:visibility="gone" />
                <!-- A small spacer between the columns -->

                <FrameLayout
                    android:layout_width="3sp"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/last_error"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/unknown"
                    android:textColor="#ff0000"
                    android:textSize="16sp"
                    android:visibility="gone" />
            </TableRow>
        </TableLayout>

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="10px" >
        </FrameLayout>

        <!-- A horizontal line -->

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="1px"
            android:background="#666666" >
        </FrameLayout>

        <!--
          <TextView android:id="@+id/proxy_header"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="@string/proxy_experimental"
        android:textSize="16sp"
        />
        -->

        <TableLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:shrinkColumns="2" >

            <TableRow>

                <!--
                 <TextView
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="@string/proxy_status"
                android:textSize="16sp"
                android:gravity="left"
                />
                -->
                <!-- A small spacer between the columns -->

                <FrameLayout
                    android:layout_width="3sp"
                    android:layout_height="wrap_content" />
            </TableRow>

            <TableRow>

                <!-- A small spacer between the columns -->

                <FrameLayout
                    android:layout_width="3sp"
                    android:layout_height="wrap_content" />
            </TableRow>

            <TableRow>

                <!-- A small spacer between the columns -->

                <FrameLayout
                    android:layout_width="3sp"
                    android:layout_height="wrap_content" />
            </TableRow>

            <TableRow>

                <!-- A small spacer between the columns -->

                <FrameLayout
                    android:layout_width="3sp"
                    android:layout_height="wrap_content" />
            </TableRow>
        </TableLayout>

        <!-- A horizontal line -->

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:background="#666666" >
        </FrameLayout>

        <!-- A horizontal line -->

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:background="#666666" >
        </FrameLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:visibility="gone" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/server_log"
                android:textColor="#ffffff" />

            <CheckBox
                android:id="@+id/server_log_checkbox"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:checked="false" />
        </LinearLayout>

        <TextView
            android:id="@+id/server_log"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#333333" />

        <!-- A horizontal line -->

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:background="#666666"
            android:visibility="gone" >
        </FrameLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:visibility="gone" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/session_monitor"
                android:textColor="#ffffff"
                android:visibility="gone" />

            <CheckBox
                android:id="@+id/session_monitor_checkbox"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:checked="false"
                android:visibility="gone" />
        </LinearLayout>

        <TextView
            android:id="@+id/session_monitor"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#333333"
            android:visibility="gone" />

        <!-- A horizontal line -->

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:background="#666666" >
        </FrameLayout>

        <!-- It's visually pleasing to have some empty space at the bottom -->

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="15dp" />
    </LinearLayout>

</ScrollView>

person khushalbokadey    schedule 17.02.2013    source источник


Ответы (7)


Пожалуйста, попробуйте следующее:

Удалите xmlns:android="http://schemas.android.com/apk/res/android из всех мест, кроме ScrollView. Я считаю, что достаточно сообщить об этом приложению один раз и в самом внешнем макете или представлении xml-файла.

person Shobhit Puri    schedule 17.02.2013
comment
Очень странно (и несовместимо), что синтаксический анализатор должен отклонять повторяющееся объявление пространства имен. Какой это парсер XML? - person Michael Kay; 17.02.2013
comment
Сэр, как посмотреть, какой парсер используется? Я использовал анализатор по умолчанию, который поставляется с пакетом Eclipse ADT. - person Shobhit Puri; 18.02.2013
comment
Спасибо, оставив строку xmlns в основном линейном макете и убрав ее из остальных вложенных макетов, сработало. - person cwiggo; 01.07.2013

В XML-файле Android пространство имен Android может:

  • объявляться только один раз
  • объявляться только в верхнем («внешнем») Android View в иерархии xml

или вы получите сообщение об ошибке при создании проекта. В вашем случае верхнее представление Android — это ScrollView, поэтому продолжайте

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

в ScrollView и удалите его из всех других вложенных Views, включая LinearLayout.

person onosendai    schedule 02.06.2013

для людей, которые внезапно видят это сообщение, комментарий от Sudhir должен быть принятым ответом.. английский был не это хорошо, я подумал: так что, если вы боретесь: в eclipse перейдите в меню project нажмите clean... и выберите clean all projects, это удалит случайное появление этого сообщения в ситуации, когда оно отсутствовало раньше

person user26676    schedule 09.04.2013
comment
В моем случае ответ @Shobhit правильный. Рекомендация Судхира выполнить полную очистку/восстановление хотя и действительна, но слишком очевидна для большинства пользователей. - person David Manpearl; 11.05.2013
comment
Я согласен с @DavidManpearl, ответ Судхира - обходной путь, ответ Шобхита - постоянное решение. - person Jose_GD; 08.08.2013

Я думаю, что удаление ненужной строки является более подходящим способом, потому что:

1) Очистка проекта решит проблему только один раз. И если вы снова запустите проект или переключитесь с другого файла на этот файл xml, он снова покажет ошибку.

2) Что еще более важно, "xmlns:XXX" должно быть свойством первого узла.

person lilingmzai    schedule 20.03.2014

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

удалить вышеуказанный тег

и хранить

<fragment
..........
........
........
......../>

or </fragment>

person user3040657    schedule 05.03.2014

Чтобы эта проблема исчезла раз и навсегда без массовых изменений в исходниках (что внесло бы шум в отслеживание версий):

Перейдите на вкладку «Проблемы» — щелкните правой кнопкой мыши сообщение — выберите «Быстрое исправление». Появится окно, в котором вы можете указать Eclipse игнорировать эту проблему в проекте (или только в одном файле, если хотите).

После этого XML скомпилируется нормально.

person 18446744073709551615    schedule 19.06.2015

person    schedule
comment
Абсолютно. Это первое, что нужно попробовать. Много раз очистка проекта работает, и некоторые другие решения предполагают то же самое. Но у меня это не сработало даже после этого, и удаление этой строки сработало. - person Shobhit Puri; 03.04.2013
comment
Если вы даже не хотите ждать времени очистки проектов, откройте представление «Проблемы» в eclispe, выберите ошибки, исходящие из пространства имен xml, и удалите их (нажмите «Отмена» или выберите «Удалить» в контекстном меню). Забавное затмение, не так ли? - person hara; 19.01.2014
comment
Привет, ребята, приведенное выше решение мне не подходит, но это решение настолько идеально, и оно отлично сработало ... Большое спасибо @Sudhir .. - person Ahmad MOUSSA; 17.09.2014