Android - изменение ориентации - выход из приложения, но без сбоя

Посмотрел другие сообщения, но не видел ответа, который я ищу...

У меня есть два макета: layout-port и layout-land.
Если я запускаю приложение с помощью эмулятора или устройства, вертикально или горизонтально, приложение работает нормально с правильными макетами.

Однако если я поверну эмулятор или устройство, приложение закроется. Никакого сбоя, perse', он просто не работает.

У меня есть другие приложения с аналогичными макетами, которые отлично работают без какой-либо обработки ориентации в манифесте. Я не беспокоюсь о сохранении данных.

Основные различия между тем, что работает, и этим (у этого есть):
* Меню с подменю
* Диалоговые экраны (не виджет диалога Android)
* Виджет вкладок

Все вышеперечисленные элементы работают в своих соответствующих макетах (порт и земля), приложение просто закрывается при повороте эмулятора или устройства, и мне нужно перезапустить приложение.

Есть рекомендации? Спасибо alt text

Манифест:

(удалено)


person headscratch    schedule 02.09.2010    source источник
comment
Что говорит LogCat? (используйте aLogCat из маркета)   -  person Juri    schedule 02.09.2010
comment
Дублирующий запрос отделки вызывает у меня любопытство. У вас есть код вашей деятельности, который вы могли бы опубликовать? И, возможно, также то, как вы зарегистрировали активность в своем манифесте.   -  person Juri    schedule 03.09.2010
comment
Скриншот выложу в пост...   -  person headscratch    schedule 03.09.2010
comment
Я опубликую снимок экрана в посте ... Хотя код обширен (800+ строк с двойным, плавающим числом ...), он также довольно прост. Манифест содержит 5 активностей, только название и метку для каждой. Я попытался добавить ориентациюChange для блокировки одного макета, но это не имело значения. Также попробуйте использовать опцию датчика, это тоже не имеет значения.   -  person headscratch    schedule 03.09.2010


Ответы (2)


Если вы используете приведенный выше код, внесите одну модификацию:

android:configChanges="keyboard|keyboardHidden|orientation"

использование только «ориентации» будет обрабатывать изменения ориентации, вызванные акселерометрами и т. Д., Но на устройствах с физической клавиатурой и выдвижным экраном действие все равно будет закрыто и перезапущено каждый раз, когда пользователь открывает свою клавиатуру.

person David Perry    schedule 02.09.2010
comment
Спасибо! Вот такая штука удалась! Это предотвратило его смерть, но он сохраняет портретную компоновку и никогда не меняется на альбомную. На самом деле, я буду жить с этим для этого приложения. Я хотел бы знать, почему добавление клавиатуры позаботилось об этом (просто ориентация, как предложил Юрий, не помогла). У моего устройства нет физической клавиатуры. Мне никогда раньше не приходилось этого делать, и я подозреваю, что это должно быть как-то связано с меню/подменю приложения, требующим ввода данных пользователем. Спасибо еще раз! - person headscratch; 03.09.2010
comment
:D круто, у меня была клавиатура в моей деятельности, но я удалил ее в своем посте, так как это не имело для меня смысла :) - person Juri; 03.09.2010

Вы пытались добавить android:configChanges="orientation" к объявлению своей активности в манифесте? Обычно при изменении конфигурации активность закрывается и перезапускается. Добавление этого «флага» предотвращает это и вместо этого вызывает метод onConfigurationChanged().

person Juri    schedule 02.09.2010
comment
Спасибо. Да, пробовал несколько раз, в том числе размещал в каждом теге активности. И, как уже упоминалось, также пытался использовать сенсорную метку. Вот что в этом такого странного. configChanges всегда работал в других моих приложениях. Единственная другая странность в том, что я вижу в logCat, — это повторяющийся запрос на завершение в предупреждении. - person headscratch; 03.09.2010
comment
Добавлено: я зафиксировал портретную ориентацию, затем запустил приложение в альбомной ориентации, переключился на портретную ориентацию и заметил, что непосредственно перед выходом из приложения отображается макет. Это почти предполагает, что это связано с дублированием завершения, указанным в логарифме. Однако мой код завершает вызовы только в различных действиях, а не в onCreate. Озадачивает... - person headscratch; 03.09.2010