如何解决Android中的计时问题

时间:2016-10-13 04:28:10

标签: android asynchronous

当我在onCreateOptionsMenu()内时,我将我的活动中的一个菜单项存储为类字段。

_myMenuItem = (MenuItem) findViewById(R.id.menu_item);

但是在onCreate()中我调用了异步方法,其结果决定了我是否应该在所述菜单项上使可见性为true或false;例如:

if (someCondition) {
  _myMenuItem.setVisible(true);
}

问题有时是在菜单膨胀之前异步方法完成(并且上面的代码被调用),导致空指针异常。

如何解决此时间问题?理想情况下,如果有人知道一个好方法,不要在onCreateOptionsMenu()内放置异步调用。感谢

1 个答案:

答案 0 :(得分:0)

在Activity中声明一个布尔属性。完成后台工作后,如果要显示菜单项,则将该属性设置为true,否则返回false并强制重新刷新菜单(调用invalidateOptionsMenu)。刷新选项菜单会调用onPrepareOptionsMenu。在onPrepareOptionsMenu中,检查属性的值并设置菜单项的可见性。