2

我在以下代码中收到此消息:

public boolean onOptionItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.x:
            Log.i(Home, "klick");

        case R.id.y:
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

我总是得到这个错误:

Home 类型的 onOptionItemSelected(MenuItem) 方法必须覆盖超类方法

我搜索了整个互联网,stackoverflow上有一些帖子,但是!我的编译器设置为 1.6,我的项目也不例外。

为什么它必须覆盖超类方法?这个方法不是超类方法吗,我用的是super.onOptions...?

我想要一个@Override,因为我在某个地方看到过它,而且我的代码似乎无法正常工作。

这是我在这里的第一个问题,所以如果我忘记了什么,请不要难过。

4

2 回答 2

4

试试onOptionsItemSelected(..)

你错过了's',你有 onOptionItemSelected(..)

于 2012-11-05T22:39:30.757 回答
0

好吧,我不知道为什么编译器找不到超类方法,但是..这就是问题所在。

如果您使用 @Override 注释您的方法,编译器会尝试在超类中找到该方法但它没有找到它(也许,因为该方法的第一次出现是两个或三个类之前,而不是之前。

解决方案:删除@Override 注释。编译器不会检查超类方法,您的代码将编译正常。

没有注释,您的代码将正常工作。

PD。对不起我糟糕的英语。C

乌普斯。这是真的。该方法是带有大“s”的 onOptionsItemSelected。这就是为什么您的覆盖注释不起作用的原因,编译器找不到超类方法。

于 2014-04-06T21:46:29.467 回答