2017-09-05 53 views
0

我创造它的一个应用程序,部分是在用户交互功能。我想存储在一立柱用户的意见,我不希望限制任何意见的一个用户可以进行量。我被分配一个随机数作为数据库条目的.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

回答

4

的问题是,你设置一个侦听数据的变化,你也将里面的数据(因此它被称为)。

你不需要听众,只需添加:

else { 
    String uniqueId = UUID.randomUUID().toString(); 
    commentDB.child(postID) 
      .child("Comments") 
      .child(uniqueId) 
      .setValue(commentInput); 
    commentProgress.dismiss(); 
}