[英]null Pointer Exception At onActivityResult
我有一個具有Tablayout + Viewpager組合的活動,它們一起托管了四個片段,其中一個片段是我使用Intent打開相機並在那里解析結果。
有時當我在onActivityResults上解析結果時,我會收到NullPointerException
這是代碼
public class CheckInFragment extends BaseFragment implements CheckInPresenterView {
private CameraIntegrator cameraIntegrator;
private ImageCallback cameraResultCallback = new ImageCallback() {
@Override
public void onResult(int requestedBy, Result result) {
if (requestedBy == RequestSource.SOURCE_CAMERA) {
...
}
}
};
private void openCamera() {
// Permission Check Shifted To Attendance Activity
if (cameraIntegrator == null) {
cameraIntegrator = new CameraIntegrator(this);
cameraIntegrator.setImageDirectoryName(GlobalConstants.IMAGE_FOLDER_NAME);
cameraIntegrator.setRequiredImageSize(ImagesSizes.OPTIMUM_MEDIUM);
}
try {
cameraIntegrator.initiateCapture();
} catch (NoCameraAppFoundException e) {
e.printStackTrace();
}
}
@Override
public void onActivityResult(final int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (requestCode == CameraIntegrator.REQUEST_IMAGE_CAPTURE)
cameraIntegrator.parseResults(requestCode, resultCode, data, cameraResultCallback); //Null Pointer Exception here sometimes
}
}
}
Crashlytics日志:
Fatal Exception: java.lang.RuntimeException: Unable to resume activity {com.xxx.AttendanceActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65537, result=-1, data=null} to activity {com.xxx.AttendanceActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.xxx.CameraIntegrator.parseResults(int, int, android.content.Intent, com.xxx.camera.ImageCallback)' on a null object reference
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3513)
有人可以解釋為什么有時候我使cameraIntegrator為null
嗎?
是因為此代碼在父級活動中嗎?
ViewPagerGeneralAdapter viewPagerAdapter = setupViewPager(viewPager);
tabLayout.setupWithViewPager(viewPager);
viewPager.setOffscreenPageLimit(viewPagerAdapter.getCount()); <---
我該如何重現此錯誤?
cameraIntegrator
在片段的onResume()
方法中初始化cameraIntegrator
。 問題是,如果重新創建了片段(例如,從其他活動返回時),則可能不會調用openCamera()
方法,因此cameraIntegrator
將永遠不會初始化,並且為null。
嘗試這個。
@override
public void onResume(){
super.onResume();
initializeCameraIntegrator();
}
private void initializeCameraIntegrator(){
if (cameraIntegrator == null) {
cameraIntegrator = new CameraIntegrator(this);
cameraIntegrator.setImageDirectoryName(GlobalConstants.IMAGE_FOLDER_NAME);
cameraIntegrator.setRequiredImageSize(ImagesSizes.OPTIMUM_MEDIUM);
}
}
private void openCamera() {
try {
cameraIntegrator.initiateCapture();
} catch (NoCameraAppFoundException e) {
e.printStackTrace();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.