Android, вопрос ориентации с Tabhost и это очень странно - PullRequest
0 голосов
/ 21 июля 2011

каждый.

Я создал Tabhost и на нем 4 кнопки.

Я устанавливаю android: configChanges = "Ориентация | Клавиатура скрытая" для каждого действия в файле с указанием.

И я также переопределяю метод onConfigurationChanged, чтобы прослушивать событие, когда экран ориентирован.

Теперь есть «Ошибка», и я не знаю, как ее решить.

Когда я нажимаю на одну из 4 кнопок (например, A, B, C и D) и поворачиваю ориентацию планшета от портрета до пейзажа, действие в порядке. Его метод onConfigurationChanged работает.

Но когда я нажимаю кнопку B в ландшафтном режиме, ее портретное состояние все еще сохраняется (я хочу, чтобы вызывался метод onConfigChanged кнопки B, но это не так). Одним словом, если вы изменили ориентацию и нажали другую кнопку Tab, метод onConfigurationChanged в Activity не будет вызываться.

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

Ответы [ 4 ]

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

Я нашел решение аналогичной проблемы.

Я использую tabhost и хочу, чтобы 3 из 4 вкладок могли вращаться, а 1 вкладка была установлена ​​только в портретном режиме.Ранее (до применения этого исправления) 3 вкладки вращались до тех пор, пока не была выбрана вкладка фиксированного портрета, затем все они застряли в портретном режиме.

Мне пришлось настроить другие вкладки для использования ориентации ПОЛЬЗОВАТЕЛЯ, чтобы исправить это.т.е. добавил setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER); в onResume других 3 вкладок, и теперь он работает именно так, как я и планировал.3 вкладки теперь будут вращаться в зависимости от ориентации устройства пользователя, а 1 вкладка имеет фиксированный портрет.:)

0 голосов
/ 22 июля 2011

Попробуйте удалить строку:

super.onConfigurationChanged(newConfig);

из функции onConfigurationChanged ().И если это не поможет, напишите, что вы открываете / что происходит, когда вы нажимаете на любую из вкладок, чтобы мы могли понять, что может быть причиной проблемы.


Однако лучший способСделайте то, что вы пытаетесь там, чтобы поместить drawables в правильные каталоги под вашими ресурсами и используйте одно и то же имя для обоих.Таким образом, вам не нужно указывать, что рисовать, чтобы использовать для другой конфигурации, а оставить операционную систему Android, чтобы сделать это для вас.Поместите один в каталог drawable, а другой в drawable-land или drawable-port в зависимости от ориентации вашего по умолчанию.Вы можете прочитать больше о том, как предоставлять ресурсы и указать, когда они используются, здесь Предоставление ресурсов

0 голосов
/ 24 июля 2011

Спасибо за ответы.Теперь я, наконец, знаю, что не так с моей программой.

Поскольку я использовал TabHost, при изменении ориентации экрана вызывается только два метода onConfigurationChanged операций.

Например,, есть Activity, которая является контейнером для TabHost.И есть еще четыре действия (A, B, C и D), которые являются частями действия TabHost.

Таким образом, когда ориентация экрана изменяется с действием A, только метод onConfigurationChanged для TabHost и действия Aбудет называться.Другие НЕ будут называться.

Вот почему при смене экрана с книжного на альбомный.OnConfiguration A изменяется, но когда вы нажимаете кнопку других вкладок, B, C и D не изменяются (по-прежнему выглядят как портрет в ландшафтном режиме).

Таким образом, ответ , вам необходимоконтролировать метод конфигурации в TabHost Activity .И теперь это работает хорошо.

Если вы используете Tabhost, вы должны это заметить.

0 голосов
/ 21 июля 2011

Вы не можете позвонить onConfigChanged() для просмотра или любого вида обратного вызова, он вызывается только с устройства, насколько я знаю. У меня нет идей, кроме этого комментария.

...