Как обновить Android RelativeLayout при изменении ориентации без перезапуска Действия? - PullRequest
0 голосов
/ 07 июня 2010

У меня есть активность Android с RelativeLayout, и я реализовал следующий метод, чтобы предотвратить повторное создание активности при изменении ориентации:

@Override
public void onConfigurationChanged(Configuration newConfig) {       
    super.onConfigurationChanged(newConfig);

}

Я, очевидно, ничего не делаю в этом методе, но он отлично работал при использовании LinearLayout. Однако теперь, используя RelativeLayout, мой макет испортился при переходе в альбомную ориентацию.

Каков наиболее эффективный способ корректно перерисовать экран без повторного запуска активности с вызовом onCreate?

Ответы [ 2 ]

2 голосов
/ 07 июня 2010

В ответе Франческа не хватает третьего и более простого способа.

Просто добавьте

android:configChanges="keyboardHidden|orientation"

к тегу активности каждого действия, которое вы не хотите перезапускать при переходе из альбомного в портретный режим. Это заставит ОС перестроить ваш макет, не разрушая его перед перестроением. Метод oncreate больше не будет вызываться, и вы не потеряете состояние активности. Но будьте осторожны, это будет работать, только если вы используете один и тот же файл макета для портретного и ландшафтного режима.

См. Этот вопрос для получения дополнительной информации по этой теме

2 голосов
/ 07 июня 2010

У вас есть два способа:

  • Сохранение объекта во время изменения конфигурации
  • Обработка изменения конфигурации самостоятельно

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

ИМХО лучший способ - это первый, реализовав метод: onRetainNonConfigurationInstance ();

Здесь полный пример того, как использовать.

Примечание: onCreate будет вызываться снова, но вы можете настроить свой код так, чтобы во время изменения конфигурации снова вызывался долгосрочное задание

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