Почему я продолжаю получать StackOverflowError при добавлении значений Uri в ArrayList типа Uri? - PullRequest
0 голосов
/ 01 октября 2019

Я пишу приложение с использованием Java в Android Studio.

Мне нужно получить несколько filePaths (тип Uri) из метода onActivityResult и передать его в массив данных типа Uri. Этот массив затем передается объекту. Однако по какой-то причине, когда я тестирую свой код, я получаю сообщение об ошибке переполнения стека.

Мой массив имен называется imgPaths

Я перепробовал все, что смог найти, но безрезультатно

private void uploadImage() {

    if (filePath != null) {
        final ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setTitle("Uploading...");
        progressDialog.show();

        StorageReference ref = storageReference.child("images/" + UUID.randomUUID().toString());
        ref.putFile(filePath)
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        progressDialog.dismiss();
                        imgPaths.add(filePath); // <-------- ERROR CAUSED BY THIS LINE!!! :(

                        Toast.makeText(registrationPagePart2.this, "Upload Successful", Toast.LENGTH_SHORT).show();
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        progressDialog.dismiss();
                        Toast.makeText(registrationPagePart2.this, "Failed " + e.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                })
                .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                        double progress = (100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot
                                .getTotalByteCount());
                        progressDialog.setMessage("Uploaded " + (int) progress + "%");
                    }
                });

        this.count++;
    }
}

Ожидаемый результат: ArrayList типа Uri, содержащий местоположение несколькихфайлы изображений.

Фактический результат: StackOverflowError

...