Android:如果onOptionsItemSelected返回false会导致应用

时间:2015-07-19 17:53:00

标签: android

很长一段时间后,我回到android编程继续从我的newbee位置开始!

之前,这段代码在我的主要活动中对我有用:

    @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,程序崩溃的原因是什么?

有人可以帮忙理解这个吗?

1 个答案:

答案 0 :(得分:1)

资源ID的类型很长。您应该将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);
}