我有一个包含四个选项卡的 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/