今天我终于让我的 facebook 实现工作起来了,当我开始在我的应用程序中实现它时,我通过 @Override 收到以下错误。
类型的 onComplete(Bundle) 方法
FBConnectionActivity.LoginDialogListener
必须重写超类方法
如果我删除@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");
}
}
...
}
这只是发生错误的代码的一部分。但这在一个应用程序中没有任何错误,而在另一个应用程序中却有错误。
经过一番搜索,我发现他们在 Java 5 和 6 之间进行了一些更改。但我想我在 eclipse 中的应用程序使用相同的 java 环境。
希望有人能解释这是为什么。
多谢!
通常,该消息将表明您的方法签名与其重写的方法不同。然而,纵观DialogListener 的来源 https://github.com/facebook/facebook-android-sdk/blob/master/facebook/src/com/facebook/android/Facebook.java,你的方法看起来是正确的。
在 Java 5 中你不能使用@Override
带有实现接口的方法的注释,仅包含来自超类的方法的实际覆盖。这在 Java 6 中发生了变化,因此您现在可以在这两种上下文中使用它。
如果您使用 Java 5 进行编译(或设置编译器的-source
选项期望 Java 5 源)这可能是问题的原因(如果是的话,它应该抱怨所有 4 个方法)。在这种情况下,唯一的解决方案是删除注释。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)