Android:if onOptions ItemSelected return false会使应用程序崩溃

Android:if onOptions ItemSelected return false会使应用程序崩溃,android,Android,很长一段时间后,我回到了android编程,继续从我的新手位置向上 在此之前,此代码在我的主要活动中适用: @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.action_do_task) { updateDisplay("Task done!"); } return false; }

很长一段时间后,我回到了android编程,继续从我的新手位置向上

在此之前,此代码在我的主要活动中适用:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
      if (item.getItemId() == R.id.action_do_task) {
        updateDisplay("Task done!");
      }
      return false;
    }
现在,我只能这样实施:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
      int id = item.getItemId();
      if (id == R.id.action_do_task) {
        doIt("done!");
      }
      //return false;
      return super.onOptionsItemSelected(item);
    }
如果我使用return false,程序将挂起,从错误消息中我无法找出原因

但是在Android帮助中,我读到默认值super.onOptionsItemSelected(item);也会返回false,那么为什么会这样呢?如果我手工编写返回false,为什么程序会崩溃


任何人都可以帮助理解这一点吗?

资源id的类型是long。您应该将id变量声明为long类型

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    long id = item.getItemId();
    if (id == R.id.action_do_task) {
        doIt("done!");
    }
    return false;
    //return super.onOptionsItemSelected(item);
}

我试着在我的程序中返回false它工作正常,注释掉doIt(“done!”)行;然后再试一次,我想是有错误的