6

在终于让Android Facebook SDK正确导入之后我发现eclipse无法识别FbDialog.java中onclick的覆盖:

mCrossImage.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mListener.onCancel();
        FbDialog.this.dismiss();
    }
});

它也不识别 ServiceConnection 的 TokenRefreshServiceConnection 实现中的 onServiceConnected 和 onServiceDisconnected 的覆盖

@Override
public void onServiceConnected(ComponentName className, IBinder service) {
    messageSender = new Messenger(service);
    refreshToken();
}

@Override
public void onServiceDisconnected(ComponentName arg) {
    serviceListener.onError(new Error("Service disconnected"));
    // We returned an error so there's no point in
    // keeping the binding open.
    mAuthActivity.unbindService(TokenRefreshServiceConnection.this);
}

在警告中,所有三种方法都说该方法必须覆盖超类方法。我还没有修改代码。我检查了 Eclipse 是否将这些类型识别为相应超类中的相同类型,并且我尝试按 control-shift-o 来组织导入,这是针对类似问题的答案中建议的修复。

这些覆盖是 SDK 的一部分,而不是任何单独的项目。我将项目设置为使用 Android SDK 2.2,如 Facebook 的说明所示,以及 4.0.3,理论上,它应该与所有以前的版本兼容。我还没有让 Facebook 自己的代码工作。作为旁注,有没有我可以使用的罐子?这将使这变得容易得多。

4

2 回答 2

15

猜测您的项目属性 -> Java 编译器编译器合规级别设置为 1.5,而不是 1.6(或更高)。

改变这个。

为什么javac在@Override注释上失败

于 2012-02-22T04:29:46.387 回答
2

懒惰、快速和简单的解决方法是删除 @Override 注释。正确的修复方法是检查项目是否编译为 Java 1.5 或更高版本,使用 Eclipse 中的“修复项目属性”,并可能检查 Facebook 库项目是否使用与您的项目相同的 Android SDK 进行编译。

于 2012-02-07T03:57:02.553 回答