Как расширить ListActivity без объявления ListView в макете XML в Android

1

Привет, ребята, я разрабатываю экран в android.Iam, пишущий код для этого экрана, чтобы работать как в портретной, так и в ландшафтной ориентации. Вот мой портретный и ландшафтный XML - это разные, поэтому я использую разные XML файлы как для портретной, так и для ландшафтной ориентации. включал, что эти XML файлы в методе onConfigurationChanged(). В зависимости от изменения ориентации iam, включая этот конкретный XML файл и iam, используя только одно действие для этого, которое расширяет ListActivity. В книжной ориентации iam с использованием ListView, но в ландшафтной ориентации iam не используется ListView. Когда я изменяю свою ориентацию от "Портрет к пейзажу", он дает исключение, говоря, что у вашего контента должен быть ListView, чей идентификатор атрибута "android.R.id.list". Вот я понимаю проблему, которая в моем файле Ландшафтного XML не использовал ListView, поскольку я расширил ListActivity. Но я не хочу использовать ListView. Как я могу это преодолеть.

Теги:

1 ответ

0

Я не уверен, что вы можете полностью избежать этой проблемы. ListActivity абсолютно требует наличия в макете ListView с идентификатором @android:id/list (или android.R.id.list в коде).

Один взлом, который вы можете попробовать, - это определить свой ландшафтный макет, чтобы он имел ListView но заставлял ListView иметь нулевую высоту. ListActivity будет удовлетворен, и все же он не будет отображаться на экране.

Кстати, если вы не используете каталоги ресурсов, зависящие от конфигурации (res/layout-port и res/layout-land), вам следует. Структура автоматически привяжет правильный файл макета к используемому идентификатору макета, и вам не нужно выбирать между ними в коде. См. Раздел " Предоставление ресурсов".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню