<分区>
我正在尝试在 firebase 上同时上传/保存 3 张图片和 4 个文本字段。
这是我的代码:
if (!pDescription.getText().toString().isEmpty()) {
if (!pDuration.getText().toString().isEmpty()) {
if (!pPrice.getText().toString().isEmpty()) {
if (imageArray != null) {
if (imageArray.size() > 0) {
for (int i=0; i<imageArray.size(); i++) {
Uri file = Uri.fromFile(new File(imageArray.get(i).toString()));
Log.d("CALLED", "YES1");
String key = database.getReference().push().getKey();
UploadTask uploadTask = storage.getReference().child(AccessToken.getCurrentAccessToken().getUserId()).child(key).child("p_image").putFile(file);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL.
@SuppressWarnings("VisibleForTests")
Uri downloadUrl = taskSnapshot.getDownloadUrl();
imageUrls.add(downloadUrl.toString());
String id = database.getReference().push().getKey();
database.getReference().child(AccessToken.getCurrentAccessToken().getUserId()).child(id).child("pDescription").setValue(pDescription.getText().toString());
database.getReference().child(AccessToken.getCurrentAccessToken().getUserId()).child(id).child("pDuration").setValue(pDuration.getText().toString());
database.getReference().child(AccessToken.getCurrentAccessToken().getUserId()).child(id).child("pPrice").setValue(pPrice.getText().toString());
if (imageUrls != null) {
for (int i=0; i<imageUrls.size(); i++) {
Log.d("imageUrlsSize", String.valueOf(imageUrls.size()));
// everything is working fine above this line
// this text is not getting saved on firebase
String idtwo = database.getReference().push().getKey();
database.getReference().child(AccessToken.getCurrentAccessToken().getUserId()).child(id).child(idtwo).child("imageUrl").setValue(downloadUrl);
}
}
Toast.makeText(getBaseContext(), "Posted successfully!", Toast.LENGTH_SHORT).show();
}
});
}
} else {
Snackbar snackbar = Snackbar
.make(coordinatorLayout, "Upload p's image", Snackbar.LENGTH_SHORT);
snackbar.show();
}
}
} else {
Snackbar snackbar = Snackbar
.make(coordinatorLayout, "aaa", Snackbar.LENGTH_SHORT);
snackbar.show();
}
} else {
Snackbar snackbar = Snackbar
.make(coordinatorLayout, "bbb", Snackbar.LENGTH_SHORT);
snackbar.show();
}
} else {
Snackbar snackbar = Snackbar
.make(coordinatorLayout, "ccc", Snackbar.LENGTH_LONG);
snackbar.show();
}
图像和 3 个文本字段已成功保存,但我认为当达到上面指定的行中的代码时,应用程序崩溃并出现此错误:java.lang.StackOverflowError: stack size 8MB
.
为什么会这样?
请帮帮我。