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

Android include tag - неверная ссылка на макет

У меня возникла проблема, включая другой макет через тег include в XML файле android layout. При указании ссылки на макет (@layout/...) я получаю InflateException в Eclipse ADT со следующей ошибкой: InflateException: вы должны указать действительную ссылку на макет. Макет ID @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>

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

заблаговременно

4b9b3361

Ответ 1

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

Закрыто Eclipse, и только что открыл его, и это сработало.

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

Ответ 2

Если кто-то наткнулся на этот поток, который ищет эту ошибку:

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: перед ним.

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

Проверить пустые

<include>
</include>

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

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

Ответ 7

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

Ответ 8

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