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

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

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

如果我在选项卡之间快速切换(当它们仍在加载时)然后按下菜单按钮(当当前选项卡的 AsyncApiTask 仍在运行时),我可能会出错出现选项菜单。

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

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

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

最佳答案

是的,CommonsWare 建议是更好的解决方案!你甚至可以考虑使用 FragmentTabHost和每个选项卡的 fragment 。这样宿主 Activity 就可以从 onTabChanged(String tab) 集中更新选项菜单。

虽然 AsyncTask 是从 Activity 中产生的,但如果它没有运行 onPostExecute(...) 它仍然会继续。此外,由于 AsyncTask 的默认行为是可变的(不同版本的 android 依次/并行运行它们),如果没有你自己的 ThreadPoolExecutor 就很难控制。 .您的快速 Activity 切换和重复的 AsyncTask 似乎正在阻塞。

关于android - Android TabActivity 中奇怪的选项菜单行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2707448/

相关文章:

android - 在 Android 应用程序中获取 Dropbox URL

java - 更新按钮的异步任务

将项目添加到 GoogleMap 时 Android AsyncTask 错误

java - Android TabHost 语法

带有tabhost的android activitygroup,键盘不显示

java - Android Studio 突然无缘无故显示编译错误

android - 更改自定义操作栏标题

android - 如何处理互联网连接中断?

android - 为什么 Eclipse 突出显示 R.id.tabhost?

android - 可以每隔几秒将手机旋转 90 度的机器?