2012-06-28 3 views
1

Я создал макет и макет двух папок с двумя файлами xml, один для портрета, а другой для пейзажа. Оба xmls работают, но здесь проблема.Приложение для ландшафтного и портретного андроида

Мой первый экран - это экран входа в систему, а мой второй экран - главный экран. Если я зарегистрируюсь на портрете, а затем вернусь к экрану телефона на главном экране. Макет будет горизонтальным, но он использует портрет xml для главного экрана.

Такая же ошибка возникает, если я начну с пейзажа и попытаюсь перейти к портрету позже.

Кажется, что любой макет, который я делаю для моего основного, это макет, который будет использоваться для остальной части приложения. Нужно ли вообще обойти это?

Также. Я уже использую android: configChanges = «ориентация» в моем манифесте для действий.

ответ

2

Если вы используете android:configChanges="orientation", вы можете переопределить onConfigurationChanged, чтобы раздуть новый макет после изменения конфигурации.

@Override 
protected void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig);     
    setContentView(...); 
} 

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

2

Использование android:configChanges="orientation" означает, что вы будете обрабатывать ориентацию в коде. Если вы хотите, чтобы он автоматически переключал макеты, вы не должны этого делать.

+1

Чтобы уточнить: значение 'configChanges' означает, что вы обошли встроенную обработку изменений в конфигурации Android (которая является частью, которая будет отключать файлы xml для вас). Если вы удалите его, вам нужно будет знать, что ваша активность будет убита и воссоздана при вращении с xml-файлом для новой ориентации. –

+0

Да, именно поэтому я сохранил его там, потому что я не хотел, чтобы его убивали и воссоздавали. Итак ... Я понимаю, что то, что я делаю неправильно, но не уверен, куда идти отсюда – user1424489

+0

У вас есть веская причина для использования 'configChanges' в первую очередь? Почему вы его используете? –

0

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

Смежные вопросы