我知道這個問題已經被問過幾次了。我嘗試了所有這些,但在我的情況下不起作用。片段中的OnActivityResult不叫
我試圖從圖庫上傳圖片或通過意圖從相機捕獲。所以,實現是從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);
}
});
如何解決這個問題?
UPDATE
我注意到,如果我在給Facebook已經登錄,因爲它發現了一個活動的會話不出現問題。否則,會發生錯誤。
我猜Facebook會話拋出錯誤,因爲沒有涉及任何會話。
請參閱下面我的解決方案。