我正在创建一个应用程序及其用户交互中的部分功能。我想存储用户对帖子的评论,我不想限制任何一个用户可以发表的评论数量。我通过分配一个随机数作为数据库条目的 .setValue
来做到这一点。
使用此实现,无论何时将评论发送到数据库,它都会陷入无限循环,在该循环中,它会不断更新文本框中输入的相同字符串,但会不断生成新帖子。 完整代码;
sendComment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
commitPost();
finish();
}
});
}
private void commitPost() {
commentProgress.setMessage("Posting");
commentProgress.show();
final String commentInput = commentText.getText().toString().trim();
if(TextUtils.isEmpty(commentInput)){
Snackbar.make(commentLayout,"You haven't finished your post yet",Snackbar.LENGTH_SHORT);
}else{
commentDB.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String uniqueId = UUID.randomUUID().toString();
commentDB.child(postID).child("Comments").child(uniqueId).setValue(commentInput);
commentProgress.dismiss();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
问题出在commentDB.addValueEventListener
最佳答案
问题是您为数据更改设置了一个监听器,并且您还更改了其中的数据(因此被称为)。
您不需要监听器,只需添加:
else {
String uniqueId = UUID.randomUUID().toString();
commentDB.child(postID)
.child("Comments")
.child(uniqueId)
.setValue(commentInput);
commentProgress.dismiss();
}
关于android - 如何停止 Firebase 数据库无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46057882/