Android-вкладка руин - PullRequest
       14

Android-вкладка руин

0 голосов
/ 27 декабря 2011

Я разработал приложение для android tablets, и оно состоит из панели вкладок. Я разработал два макета для каждой вкладки: один для пейзажа, а другой для портрета. Когда пользователь выбирает любую из вкладок, сначала я показываю progress bar in asynchronous task, и некоторые данные загружаются.

В настоящее время я работаю с on restore instance, здесь, когда пользователь поворачивает приложение в альбомную или вертикальную ориентацию, asynchronous task is been called again и данные загружаются из первого процесса.

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

Как решить эту проблему, я не хочу использовать метод OnConfig, и я попробовал Onrestore instance state, оба не решают мои проблемы ... Просьба предложить мне лучший способ ......

1 Ответ

0 голосов
/ 27 декабря 2011

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

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

Чтобы сохранить индикатор выполнения, вы можете сохранить переменную состояния, которая сохраняется в течение onSaveInstanceState и восстанавливается с помощью onRestoreInstanceState, которая может использоваться для отображения / скрытия представлений. Другой вариант - опросить класс менеджера для запущенного процесса и соответствующим образом обновить макет во время onCreate

Возможно, это не самое быстрое и простое решение, но хорошая основа для этого поможет в будущем.

...