Изменение ориентации - обновление пользовательского интерфейса - PullRequest
0 голосов
/ 31 января 2012

Я использую данные акселерометра в своем приложении. Если угол устройства изменяется, ориентация экрана должна измениться. Для изменения ориентации у меня есть 2 макета, один для портрета и один для ландшафта.

При изменении ориентации вызывается функция, которая меняет макет с помощью:

setContentView (R.layout.landscape); или setContentView (R.layout.portrait);

Это работает нормально, но у меня проблема с несколькими элементами пользовательского интерфейса, такими как кнопки или ToggleButtons. Я инициализирую onClickListener в методе onCreate для них, и каждый раз, когда меняется ориентация, я инициализирую новый onClickListener.

К сожалению, я больше не могу изменять состояние кнопок Toggle.

Как я могу решить эту проблему?

Ответы [ 2 ]

1 голос
/ 31 января 2012

вы можете использовать /layout-land и /layout-port, и телефон автоматически переключит их для вас при изменении ориентации. см

http://developer.android.com/guide/practices/screens_support.html#DesigningResources

что касается кнопок переключения, см. onRetainNonConfigurationInstance()

http://developer.android.com/reference/android/app/Activity.html#onRetainNonConfigurationInstance%28%29

0 голосов
/ 01 февраля 2012

Как описано выше Биллом Гари, почему бы просто не позволить системе позаботиться об изменениях ориентации для вас?Также стандартные системные виджеты должны автоматически сохранять свое состояние при этом.См. здесь , чтобы узнать, почему и как управлять пользовательским состоянием, если вам нужно.

...