Использование include в качестве корневого макета node throws "Исключение ошибки при включении класса" исключение
Я пытаюсь использовать разные макеты элементов списка в зависимости от версии ОС.
Итак, я создал различные макеты, связанные с условиями.
Один из них (в layout/search_result_list_item.xml
)
<?xml version="1.0" encoding="utf-8"?>
<include xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
layout="@android:layout/simple_list_item_1">
</include>
он включает в себя стандартный "simple_list_item_1".
В моем Java-коде макет связан со списком следующим образом:
adapter = new SimpleCursorAdapter(getActivity(),
R.layout.search_results_list_item,
null,
from,
to,
0);
Когда отображается элемент списка, генерируется следующее исключение:
android.view.InflateException: Binary XML file line #2: Error inflating class include
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576)
at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
at android.support.v4.widget.ResourceCursorAdapter.newView(ResourceCursorAdapt
Что не так? не может использоваться как корневой элемент? несмотря на то, что ADT позволяет это.
Ответы
Ответ 1
Если кто-то еще задается вопросом, это ответ:
<?xml version="1.0" encoding="utf-8"?>
<merge>
<include xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
layout="@android:layout/simple_list_item_1">
</include>
</merge>
Ответ 2
Вы можете предоставить специальные ресурсы для ОС Android, используя квалификаторы в папках ресурсов.
Смотрите: http://developer.android.com/guide/topics/resources/providing-resources.html
Последний элемент в списке возможных квалификаторов - это версия (уровень API).