Ориентация экрана пейзаж назад к портрету не работает - PullRequest
20 голосов
/ 20 марта 2010

Я часами ломал голову над этой проблемой. Я создал файл main.xml и разработал один для формата res / layout-land (landscape), а другой - для портрета в res / layout.

Когда я поворачиваю эмулятор (ctrl-F11), мое приложение корректно поворачивается в альбомную ориентацию, используя правильный файл main.xml, но при последующем вращении назад в книжную ориентацию просто сохраняется альбом mail.xml.

Это было сделано в 2.0 AVD ..

Из отчаяния я скачал новый пример кода для нескольких разрешений и должен был создать новый AVD 2.1, к моему удивлению, ротация с этим приложением работает правильно, как и ожидалось. Поэтому я решил попробовать мое приложение на 2.1 AVD, и оно отлично работает.

Итак, это ошибка в 2.0 AVD или есть что-то особенное, что мне нужно сделать для версий <2.1 SDK? </p>

Это сводит меня с ума, потому что никто не упоминал эту проблему.

Заранее спасибо

Ответы [ 7 ]

9 голосов
/ 06 июня 2011

FWIW, официально сообщается об ошибке здесь .

4 голосов
/ 15 апреля 2012

Установлена ​​свежая среда разработки Android и создан новый 2.3.3 AVD. (Обе руки и х86). Оба имеют одинаковую проблему, даже с системными приложениями. Так что это не ошибка в вашем коде, потому что системные приложения имеют ту же проблему.

Нажатие кнопки «home» и перезапуск приложения позволяют восстановить его в портретном режиме.

3 голосов
/ 27 марта 2010

Если вы не укажете

<activity android:name="MainActivity" android:configChanges="orientation">

В вашем манифесте, я думаю, ваше приложение должно автоматически выбрать правильный layout.xml. Так что, похоже на ошибку в эмуляторе для меня. Во всяком случае, я обнаружил, что эмулятор глючит другими способами. Ex. он запускает код дважды, когда вы меняете ориентацию обратно.

1 голос
/ 04 ноября 2010

Я использую Eclipse для Java Helios и Android 2.2, и у меня возникла такая же проблема на моем ноутбуке. Я выяснил, в чем проблема, по крайней мере, для меня. Иногда я работаю на своем ноутбуке в области, где нет Wi-Fi, поэтому я не подключен к Интернету, и это, кажется, вызывает эту проблему. Я проверил это, зайдя в точку доступа Wi-Fi и, конечно же, переключение между портретным и ландшафтным режимом и обратно снова работает нормально. Может быть, эмулятор просто должен иметь соединение, чтобы сделать это, или это ошибка в эмуляторе.

0 голосов
/ 11 ноября 2011

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

public void onConfigurationChanged(Configuration newConfig) {
    // TODO Auto-generated method stub
    super.onConfigurationChanged(newConfig);
    startActivity(getIntent());
    finish();

}

и перезагрузите текущую активность. Это поможет вам.

0 голосов
/ 29 марта 2010

Я только закончил разработку 2.1, но еще одна мысль, которую мне просто нужно было, - это попробовать CTRL-F12 (переключиться на следующую ориентацию макета) вместо CTRL-F11 (переключиться на предыдущую ориентацию макета () и посмотреть, изменится ли что-нибудь. Это из Управление эмулятором .

Кроме того, существует ряд методов жизненного цикла, которые можно переопределить, чтобы отслеживать происходящее за кулисами. Это может дать вам знать, если в эмуляторе есть ошибка.

0 голосов
/ 28 марта 2010

Да, эмулятор немного глючит, когда дело доходит до изменения ориентации. Я не сталкивался с этой конкретной проблемой, но иногда она делает странные вещи. Однако это определенно не проблема с <2.1 SDK, по крайней мере на физическом телефоне, потому что я все еще застрял с v1.5 на моем Hero, и он правильно обрабатывает изменения ориентации, выбирая правильную папку макета, чтобы получить файлы XML. с. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...