Android @Override错误

pat*_*ick 3 android overriding

今天我终于让我的facebook实现工作了,当我开始在我的应用程序中实现它时,我在@Override上遇到以下错误.

FBConnectionActivity.LoginDialogListener类型的onComplete(Bundle)方法必须覆盖超类方法

如果我删除@Override错误已解决,但我想理解为什么它在一个应用程序而不是另一个应用程序中抱怨这个.

我有以下代码.

public abstract class FBConnectionActivity extends Activity {

private class LoginDialogListener implements DialogListener {

        @Override
        public void onComplete(Bundle values) {
                Log.d(TAG, "LoginONComplete");
                String token = mFacebook.getAccessToken();
                long token_expires = mFacebook.getAccessExpires();
                Log.d(TAG, "AccessToken: " + token);
                Log.d(TAG, "AccessExpires: " + token_expires);
                sharedPrefs = PreferenceManager
                                .getDefaultSharedPreferences(mContext);
                sharedPrefs.edit().putLong("access_expires", token_expires)
                                .commit();
                sharedPrefs.edit().putString("access_token", token).commit();
                mAsyncRunner.request("me", new IDRequestListener());
        }

        @Override
        public void onFacebookError(FacebookError e) {
                Log.d(TAG, "FacebookError: " + e.getMessage());
        }

        @Override
        public void onError(DialogError e) {
                Log.d(TAG, "Error: " + e.getMessage());
        }

        @Override
        public void onCancel() {
                Log.d(TAG, "OnCancel");
        }
}

...

}
Run Code Online (Sandbox Code Playgroud)

这只是发生错误的代码的一部分.但是这在一个应用程序中没有任何错误,并且在另一个应用程序中确实存在错误.

经过一番搜索,我发现他们已经在Java 5和6之间做了一些改变.但是我认为我在eclipse中的应用程序使用相同的java环境.

希望有人可以解释为什么会这样.

非常感谢!

Dan*_*yer 8

通常,该消息将指示您的方法签名与它覆盖的方法不同.但是,查看DialogListener源代码,您的方法看起来是正确的.

在Java 5中,您不能将@Override注释与实现接口的方法一起使用,只能使用超类中方法的实际覆盖.这在Java 6中已更改,因此您现在可以在两种上下文中使用它.

如果您正在编译Java 5(或设置编译器的-source选项以期望Java 5源)可能是问题的原因(如果它应该抱怨所有4种方法).在这种情况下,唯一的解决方案是删除注释.