Намерение камеры Android на 3 изображения разрушает и воссоздает фрагмент и вылетает на ActivityResult - PullRequest
0 голосов
/ 20 апреля 2019

Есть 3 просмотра изображений, для которых я хочу установить изображение, снятое с камеры.Намерение камеры вызывается из фрагмента, снимок снимается, но при возврате во фрагмент приложения уничтожается и воссоздается.

Я сохраняю все 3 пути изображения в списке, но поскольку фрагмент уничтожен, список переинициализируется, а размерсписка становится равным 0.

Намерение для камеры:

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            if (getActivity() != null) {
if(takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
                    // Create the File where the photo should go
                    File photoFile = null;
                    try {
                        photoFile = createImageFile();
                    } catch (IOException ex) {
                        // Error occurred while creating the File
                    }
                    // Continue only if the File was successfully created
                    if (photoFile != null) {
                        photoPaths.add(photoFile.getAbsolutePath());
Uri photoURI=FileProvider.getUriForFile(getContext(),"com.example.parking.fileprovider",photoFile);
                        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,photoURI);
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
                    }
                }
            }

И в onActivityResult извлекается намерение изображения:

Bitmap bitmap;
// here imgCount is for checking number of images captured since I only want to capture 3 images.
if (imgCount == 0) {
bitmap = cropImageForApp(preview1, photoPaths.get(imgCount));
preview1.setImageBitmap(bitmap);
imgCount++;
                } else if (imgCount == 1) {
bitmap = cropImageForApp(preview2, photoPaths.get(imgCount));
                    preview2.setImageBitmap(bitmap);
                    imgCount++;
                } else if(imgCount ==2) {
bitmap =cropImageForApp(preview3,photoPaths.get(imgCount));
preview3.setImageBitmap(bitmap);
imgCount++;
}

Ожидаемый результат: Изображениебыть захваченным и установленным при просмотре изображения.

И ошибка, которую я получаю:

java.lang.RuntimeException: Невозможно возобновить действие {com.parking.vehicleparking / com.parking.vehicleparking.activity.RegisterActivity}: java.lang.RuntimeException: сбой при доставке результата ResultInfo {who = null, request = 65537, result = -1, data = null} в действие {com.parking.vehicleparking / com.parking.vehicleparking.activity.RegisterActivity}: java.lang.IndexOutOfBoundsException: индекс: 0, размер: 0 в android.app.ActivityThread.performResumeActivity (ActivityThread.java:3657) на android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3697) на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2927) на android.app.ActivityThread.-wrap11 (неизвестный источник: 0) на андроиде.app.ActivityThread $ H.handleMessage (ActivityThread.java:1639) в android.os.Handler.dispatchMessage (Handler.java:106) в android.os.Looper.loop (Looper.java:176) в android.app.ActivityThread.main (ActivityThread.java:6662) в java.lang.reflect.Method.invoke (собственный метод) в com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit.java:547) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:873) Вызвано: java.lang.RuntimeException: сбой при доставке результата ResultInfo {who = null, request = 65537, result = -1, data = null} в действие {com.parking.vehicleparking / com.parking.vehicleparking.activity.RegisterActivity}: java.lang.IndexOutOfBoundsException: индекс: 0, размер: 0 в android.app.ActivityThread.deliverResults (ActivityThread.java:4365) в android.app.ActivityThread.performResumeActivity (ActivityThread.java:3629) в android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3697) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2927) в android.app.ActivityThread-wrap11 (неизвестный источник: 0) в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1639) в android.os.Handler.dispatchMessage (Handler.java:106) в android.os.Looper.loop (Looper.Java: 176) в android.app.ActivityThread.main (ActivityThread.java:6662) в java.lang.reflect.Method.invoke (собственный метод) в com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit.java: 547) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:873). Причина: java.lang.IndexOutOfBoundsException: индекс: 0, размер: 0 в java.util.ArrayList.get (ArrayList.Java: 437) в com.parking.vehicleparking.fragment.CaptureImageFragment.onActivityResult (CaptureImageFragment.java:143) в android.support.v4.app.FragmentActivity.onActivityResult (FragmentActivity.java:160) в com.parking.vehicleparking.activity.RegisterActivity.onActivityResult (RegisterActivity.java:275) в android.app.Activity.dispatchActivityResult (Activity.java:7341) в android.app.ActivityThread.deliverResults Activity (.java: 4361) в android.app.ActivityThread.performResumeActivity (ActivityThread.java:3629) в android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3697) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2927)вandroid.app.ActivityThread.-wrap11 (неизвестный источник: 0) в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1639) в android.os.Handler.dispatchMessage (Handler.java:106) в android.os.Looper.loop (Looper.java:176) на android.app.ActivityThread.main (ActivityThread.java:6662) на java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.RuntimeInit$ MethodAndArgsCaller.run (RuntimeInit.java:547) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:873)

...