android include tag - неверная ссылка на макет - PullRequest
42 голосов
/ 28 марта 2010

У меня проблема с включением другого макета с помощью тега include в XML-файле макета Android. При указании ссылки на макет (@layout / ...) я получаю исключение InflateException в Eclipse ADT со следующей ошибкой: InflateException: необходимо указать действительную ссылку на макет. Идентификатор макета @ layout / func_edit_simple_calculator_toolbox недействителен.

ссылка должна быть действительной, так как я выбрал ее из списка других моих макетов и не набрал ее. Я использую android sdk v2.1

это файлы макетов

func_edit_simple_calculator_toolbox.xml

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

<TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content"android:layout_height="wrap_content">
<Button android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1"></Button>
<Button android:id="@+id/Button02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="2"></Button>
<Button android:id="@+id/Button03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="3"></Button>
<Button android:id="@+id/Button04" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="+"></Button>
</TableRow>
<TableRow android:id="@+id/TableRow02" android:layout_width="wrap_content" android:layout_height="wrap_content">
<Button android:id="@+id/Button05" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="4"></Button>
<Button android:id="@+id/Button06" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="5"></Button>
<Button android:id="@+id/Button07" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="6"></Button>
<Button android:id="@+id/Button08" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="-"></Button>
</TableRow>
</TableLayout>

function_editor_layout.xml

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

<com.calculoid.FunctionView android:id="@+id/function_view" android:layout_width="fill_parent" android:layout_height="fill_parent"/>

<include android:id="@+id/include01" android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/func_edit_simple_calculator_toolbox"></include>
</LinearLayout>

Кто-нибудь знает, в чем может быть проблема?

заранее спасибо

Ответы [ 8 ]

115 голосов
/ 24 июля 2012

Если кто-то наткнется на эту тему в поисках этой ошибки:

Caused by: android.view.InflateException: You must specifiy a layout in the include tag: <include layout="@layout/layoutID" />

Убедитесь, что вы делаете:

<include layout="@layout/your_layout" />

и не:

<include android:layout="@layout/your_layout" />

layout должен не иметь android: перед ним.

106 голосов
/ 08 июля 2010

Я думаю, я должен упомянуть, как я решил ту же проблему. Пробовал чистить проект и не работал. У меня довольно большие имена для макета (chrono_first_small_field), и это тоже не было причиной.

Закрыл Eclipse и просто открыл его снова, и это сработало.

Это имеет больше смысла, чем реализация метода onMeasure: -)

1 голос
/ 28 марта 2010

Я не вижу в этом ничего плохого, так что это немного странно. Я могу думать только о двух вещах: 1) Вы пытались использовать более короткое имя файла? Есть несколько ограничений на то, что допустимо в имени файла, например, никакие заглавные буквы или символы для обеспечения совместимости и длины имени файла могут быть одним из них. 2) Вы пытались удалить некоторые из своих операторов android: ... во включении и оставить их на <include layout="@layout/..."/>? На самом деле вам не нужно указывать его высоту и ширину во включении, как это уже определено в импортированном файле макета.

0 голосов
/ 15 ноября 2014

Для меня проблема заключалась в том, что название макета было неправильным: я использовал «-» вместо «_». AndroidStudio не говорил мне, что что-то не так, пока я не попытался развернуть приложение

0 голосов
/ 06 февраля 2014

Для тех, кто использует Xamarin Studio - я добавил кучу файлов AXML из другого проекта, а также получал точно такую ​​же ошибку. Я просто выключил и перезапустил Xamarin Studio (ПК), и это также решило проблему. Интересно, что другая IDE имеет ту же проблему.

0 голосов
/ 27 июня 2013

Проверить на пустое

<include>
</include>

тегов (возможно, вызвано автоматическим форматированием кода).

Они могут появляться где-то «скрытыми» в вашем xml.

0 голосов
/ 13 марта 2012

запустите eclipse с опцией -clean , и ваша проблема исправлена ​​ гарантировано . Однако запуск займет около 30 секунд

0 голосов
/ 29 марта 2010

Я «решил» проблему, но я не знаю, что действительно помогло. Мои файлы макетов не прошли существенную переписку и практически не содержат их. Единственное заметное изменение, которое я сделал до того, как проблема исчезла, это переопределение метода onMeasure (int, int) в моем классе пользовательского представления, при этом реализация просто вызывала setMeasuredDimension (100, 100).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...