Intereting Posts
Почему Android Studio 1.0 rc начнет загружать Android SDK, не обнаружив, существует ли он? Проект Ui Automator 2.0 в Android Studio Как определить, отображается ли какой-либо системный диалог? TypedArray не работает Как отправить местоположение устройства на сервер при необходимости Класс Котлина не найден при построении с дженкинсами Получение изображения из рисунка и добавление в PDF с помощью iText Как проигрывать потоковое аудио в фоновом режиме на Android? Использование GridLayout из библиотеки поддержки приводит к «NoSuchMethodError: android.support.v4.view.ViewCompat.getLayoutDirection» Шина событий и жизненный цикл компонентов android ui Не удалось увидеть теги Google Tag Manager в Google Analytics Android: эллипсис в тексте ICS продолжается после многоточия AndroidPDFViewer – не удается открыть документ pdf в приложении Как аутентифицировать мобильное приложение без имени пользователя и пароля? Spinner плавает вниз при горизонтальном выравнивании

Поведение меню странных настроек в Android TabActivity

У меня есть TabActivity с четырьмя вкладками (каждая из них – это собственное действие). Каждая вкладка определяет свой собственный onCreateOptionsMenu (а в некоторых случаях и onPrepareOptionsMenu ). Когда загружается каждая вкладка, AsyncTask для извлечения данных, необходимых для заполнения списка этой вкладки.

Если я переключаюсь между вкладками очень быстро (пока они все еще загружаются), а затем нажимает кнопку меню (пока AsyncApiTask текущей вкладки все еще работает), я могу получить неправильное меню параметров.

Например, предположим, что FooActivity (вкладка 1) имеет меню опций с элементом «Обновить», а BarActivity (вкладка 2) имеет меню опций с элементом «Просмотреть все». Если я запустил приложение (с активной вкладкой 1), быстро переключитесь на вкладку 2, а затем нажмите меню, иногда появится пункт «Обновить» (а не ожидаемый элемент «Просмотреть все»).

Кроме того, в то время как это странное поведение иногда происходит только в первом меню, нажмите (а затем нажимает на нужные элементы), иногда он «застревает», и при каждом нажатии появляются не те предметы, пока я не переключу вкладки.

Любая идея, что может продолжаться? Я не слышал об этом раньше и не нашел хороших предложений.

Да, предложение CommonsWare – лучшее решение! Вы даже можете рассмотреть возможность использования FragmentTabHost и фрагментов для каждой вкладки. Таким образом, активность хоста может централизованно обновлять меню опций с onTabChanged(String tab) .

Хотя AsyncTask из Activity , если он не запущен onPostExecute(...) он все еще продолжается. Кроме того, поскольку поведение AsyncTask s по умолчанию является переменным (разные версии android запускают их последовательно / параллельно), его невозможно контролировать без собственного ThreadPoolExecutor . Ваша быстрая переключение Activity и повторные AsyncTask кажутся блокирующими.