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>
Кто-нибудь знает, в чем проблема?
заблаговременно
Ответы
Ответ 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 не сказал мне, что что-то не так, пока я не попытался развернуть приложение.