Поведение меню странных настроек в 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 кажутся блокирующими.