2 вещи, которые нужно запомнить:
1) Слушатели Firebase не являются синхронными по своей природе.Последовательность, в которой вы написали слушателям, может не соблюдаться.
2) Когда вы пишете в локации в Firebase, он заменит предыдущий весь объект новым.
RightТеперь ваш filepath1 onSuccessListener выполняется первым.После этого выполняется filepath onSuccessListener, который перезаписывает все, что filepath1 onSuccessListener записывает в базу данных.Вот почему вы получаете этот результат.Вы можете проверить себя, посмотрев свою базу данных при выполнении этой команды.
Попробуйте этот код.Это должно решить вашу проблему.
if( mSelectedUri !=null ){
Toast.makeText(getActivity(), "uploading image", Toast.LENGTH_SHORT).show();
final String postId = FirebaseDatabase.getInstance().getReference().push().getKey();
StorageReference filepath = FirebaseStorage.getInstance().getReference()
.child("posts/users/" + FirebaseAuth.getInstance().getCurrentUser().getUid()+
"/" + postId + "/post_image").child(mSelectedUri.getLastPathSegment());
StorageReference filepath1 = FirebaseStorage.getInstance().getReference()
.child("posts/users/" + FirebaseAuth.getInstance().getCurrentUser().getUid() +
"/" + postId + "/post_image1").child(mSelectedUri1.getLastPathSegment());
Uri firebaseUri1;
filepath.putFile(mSelectedUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
firebaseUri1 = taskSnapshot.getDownloadUrl();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
filepath1.putFile(mSelectedUri1).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Uri firebaseUri2 = taskSnapshot.getDownloadUrl();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Post post = new Post();
post.setImage(firebaseUri1.toString());
// post.setImage1(firebaseUri.toString());
post.setCity(mCity.getText().toString());
post.setContact_email(mContactEmail.getText().toString());
post.setCountry(mCountry.getText().toString());
post.setDescription(mDescription.getText().toString());
post.setPost_id(postId);
post.setPrice(mPrice.getText().toString());
post.setState_province(mStateProvince.getText().toString());
post.setTitle(mTitle.getText().toString());
post.setUser_id(FirebaseAuth.getInstance().getCurrentUser().getUid());
post.setImage1(firebaseUri2.toString());
reference.child(getString(R.string.node_posts))
.child(postId)
.setValue(post);
// resetFields();
}
});
}
});