我是一个初学者开发者,只有我的应用程序的Facebook登录,链接到Parse.com,并且有一个我无法修复的bug。每当用户完全注销Facebook时,重新登录会在onActivityResult中为ParseFacebookUtils.finishauthentication创建一个NPE。我见过很多类似的问题,但没有一个解决方案适用于我。 这里是我的代码Android NullPointerException解析Facebook登录
public void parseLogin(){
ParseFacebookUtils.logIn(this, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException err) {
if (user == null) {
Log.d("SignIn", "Uh oh. The user cancelled the Facebook login.");
} else if (user.isNew()) {
Log.d("SignIn", "User signed up and logged in through Facebook!");
} else {
Log.d("SignIn", "User logged in through Facebook!");
}
}
});
toStart();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
ParseFacebookUtils.finishAuthentication(requestCode, resultCode, data);
}
我用尽了一切我能想到的,而且仍然无法回避的NPE。任何新的解决方案将不胜感激!
编辑这里的logcat的
03-31 16:23:39.938: E/AndroidRuntime(18322): FATAL EXCEPTION: main
03-31 16:23:39.938: E/AndroidRuntime(18322): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=64206, result=-1, data=Intent { (has extras) }} to activity {com.adit02/com.adit02.SignIn}: java.lang.NullPointerException
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.app.ActivityThread.deliverResults(ActivityThread.java:2996)
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3039)
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.app.ActivityThread.access$1100(ActivityThread.java:124)
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1178)
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.os.Handler.dispatchMessage(Handler.java:99)
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.os.Looper.loop(Looper.java:137)
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.app.ActivityThread.main(ActivityThread.java:4440)
03-31 16:23:39.938: E/AndroidRuntime(18322): at java.lang.reflect.Method.invokeNative(Native Method)
03-31 16:23:39.938: E/AndroidRuntime(18322): at java.lang.reflect.Method.invoke(Method.java:511)
03-31 16:23:39.938: E/AndroidRuntime(18322): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
03-31 16:23:39.938: E/AndroidRuntime(18322): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
03-31 16:23:39.938: E/AndroidRuntime(18322): at dalvik.system.NativeStart.main(Native Method)
03-31 16:23:39.938: E/AndroidRuntime(18322): Caused by: java.lang.NullPointerException
03-31 16:23:39.938: E/AndroidRuntime(18322): at com.parse.FacebookAuthenticationProvider.onActivityResult(FacebookAuthenticationProvider.java:171)
03-31 16:23:39.938: E/AndroidRuntime(18322): at com.parse.ParseFacebookUtils.finishAuthentication(ParseFacebookUtils.java:379)
03-31 16:23:39.938: E/AndroidRuntime(18322): at com.adit02.SignIn.onActivityResult(SignIn.java:103)
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.app.Activity.dispatchActivityResult(Activity.java:4649)
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.app.ActivityThread.deliverResults(ActivityThread.java:2992)
准确的NPE出现在哪条线上? –
请提供logcat中的堆栈跟踪,如果没有标记为错误,则应该是Facebook堆栈跟踪的警告。也许这个bug是在Facebook SDK中。 –
NPE发生在这一行ParseFacebookUtils.finishAuthentication(requestCode,resultCode,data);我将添加堆栈跟踪 – user3478960