我知道此问题曾被问过几次。我已经尝试了所有这些但是在我的情况下不起作用。
我正在尝试从图库上传图像或通过意图从相机捕获。因此,实现是从Fragment调用onActivityResult
。单击Fragment中的按钮时,它将返回MainActivity中的NullPointerException
。
这是logcat错误:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65538, result=0, data="imagepath"} to activity {com.example/com.example.activity.MainActivity}: java.lang.NullPointerException
在MainActivity
:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Null Pointer Exception here
Session.getActiveSession().onActivityResult(this, requestCode,
resultCode, data);
}
Session.getActiveSession()
来自Facebook,因为我正在使用Facebook SDK登录。
如果我注释掉这一行,相机/画廊意图工作但我不能使用Facebook SDK登录按钮。
在UploadFragment
:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != getActivity().RESULT_OK)
return;
switch (requestCode) {
case CAMERA_REQUEST:
//
case SELECT_PICTURE:
//
}
}
片段的ActivitResult通过以下方式调用:
btnCamera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
startActivityForResult(cameraIntent, CAMERA_REQUEST);
} catch (Exception e) {
e.printStackTrace();
}
}
});
btnGallery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// To open up a gallery browser
startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_PICTURE);
}
});
我该如何解决这个问题?
更新
我注意到如果我已登录Facebook,则问题不会发生,因为它找到了活动会话。否则,将发生错误。
我猜测Facebook Session会抛出错误,因为没有涉及会话。
请参阅下面的解决方案。
答案 0 :(得分:0)
我注意到我没有登录Facebook。这里的问题是Facebook正试图获得它的活跃会话,但却无法在SharedPreference中找到它(我正在使用普通和社交登录)。
通过简单的解决方法管理解决问题。
用try-catch块包裹Session.getActiveSession
。这将摆脱崩溃。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
Session.getActiveSession().onActivityResult(this, requestCode,
resultCode, data);
} catch (Exception e) {
// do nothing
}
}