2

我有一个ListView Activity使用 aAsyncTask从数据库加载数据的。此 Activity 有一个选项菜单,用于检查 Activity ListView 中是否有任何数据项onPrepareOptionsMenu()

如果有项目,我启用ActionBar允许用户删除项目的选项之一。

现在,当 Activity 启动时,AsyncTask 启动,并且当 AsyncTask 仍在运行时运行 onPrepareOptionsMenu(),这个菜单项永远不会启用,除非设备被翻转并且 listview 数据作为实例传入,绕过异步任务。

所以,在 AsyncTask 中onPostExecute(),我调用invalidateOptionsMenu()了,但这似乎不是要刷新的菜单(我在onCreateOptionsMenu()and中有调试代码onPrepareOptionsMenu(),两者都没有被触发)。任何帮助表示赞赏。

4

2 回答 2

1

您可以尝试haveData在 Activity 和 on 上创建一个全局布尔值onPostExecute(),相应地将布尔值设置为 true 或 false。然后根据布尔值对您进行检查onPrepareOptionsMenu()并相应地启用菜单项。

我最后一次尝试它对我有用,不知道为什么它不适合你。如果它不起作用,请从那里进行调试,告诉我们它没有在哪里执行。

于 2011-12-22T02:28:01.673 回答
1

该问题与错误的全局变量值有关。我用一个永远不正确的全局布尔值对方法内部的代码进行网关处理onPrepareOptionsMenu(),并将调试语句放在布尔检查中......导致调试语句永远不会运行。

解决该问题后,一切都按预期工作,上面的代码是正确的。

于 2011-12-22T03:14:34.103 回答