无法覆盖LocationListener类的方法

时间:2011-02-03 07:35:11

标签: android override

我想使用GPS获取当前位置。

这是我的情景。我的班级定义是:

public class UseGps extends Activity implements LocationListener

如果Í尝试覆盖像这样的LocationListener方法

1)

@Override 
public void onLocationChanged(Location loc)

2)

@Override
public void onProviderDisabled(String provider)

3)

@Override
public void onProviderEnabled(String provider)

它给我编译错误说

The method onStatusChanged(String, int, Bundle) of type UseGps must override a superclass method remove override.

2)和3)相同

这里有什么问题?

2 个答案:

答案 0 :(得分:11)

假设您正在使用Eclipse,请执行以下操作以确保您的合规性级别为1.6。

转到Project - > Properties - > Java Compiler。确保Compiler compliance level设置为1.6

您应该通过导航到Window - >将该级别设置为默认值。 Preferences - > Java - > Compiler。为1.6选择Compiler compliance level

答案 1 :(得分:4)

有人应该解释一下:

    在Java 1.6之前,接口不支持
  1. @Override

  2. 在Java 1.5中,您不能在方法上使用@Override来指示它旨在实现接口方法 - 编译器会将其标记为覆盖错误。在Java 1.5下,您只能使用@Override来表示该方法正在覆盖超类方法。

  3. 从Java 1.6开始,您可以使用@Override来指示该方法旨在实现接口方法(太糟糕了,它不是像@Implements那样的单独注释。)

  4. Eclipse有一个功能可以确保您的代码在特定版本的Java下编译,无论您安装的Java实际版本是什么 - 这都是Compiler Compliance Level。如果它设置为1.5,即使你的JDK是1.6,编译器也会标记任何不能在Java 1.5下编译的代码。