Android TabActivity中的奇怪选项菜单行为

时间:2010-04-25 07:04:17

标签: android android-asynctask android-tabhost tabwidget options-menu

我有一个TabActivity,有四个标签(每个标签都有自己的活动)。每个标签都定义了自己的onCreateOptionsMenu(在某些情况下,onPrepareOptionsMenu)。加载每个选项卡后,将启动AsyncTask以检索填充该选项卡列表所需的数据。

如果我在标签之间切换非常快(当它们仍在加载时),然后按菜单按钮(当前标签的AsyncApiTask仍在运行时),我可以选择错误的选项菜单出现。

例如,假设FooActivity(标签1)有一个带有“刷新”项的选项菜单,BarActivity(标签2)有一个带有“查看全部”项目的选项菜单。如果我启动应用程序(选项卡1处于活动状态),快速切换到选项卡2,然后点击菜单,“刷新”项目(而不是预期的“查看全部”项目)有时会显示。

此外,虽然这种奇怪的行为有时会出现在第一个菜单按下(后来按下显示正确的项目),但有时它会“卡住”,并且每次按下时都会显示错误的项目,直到我切换标签。

知道会发生什么事吗?我以前没有听说过这种情况,也未能找到任何好的建议。

1 个答案:

答案 0 :(得分:0)

是的,CommonsWare的建议是更好的解决方案!您甚至可以考虑为每个标签使用FragmentTabHost和片段。这样,主持人活动可以从onTabChanged(String tab)集中更新选项菜单。

AsyncTaskActivity产生onPostExecute(...),如果它还没有运行AsyncTask,它仍在继续。此外,由于Activity的默认行为是可变的(不同版本的android按顺序/并行运行它们),如果没有自己的ThreadPoolExecutor,很难控制。您的快速AsyncTask切换和重复{{1}}似乎正在阻止。