我正在构建一个应用程序,其中有二维码和它的扫描仪,我想保持记录每个二维码被扫描的次数,但Firebase本身增加了值…我想当二维码被扫描时增加一个值。
valueEventListener1 = reference2.addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
reference1.removeEventListener(valueEventListener);
if (dataSnapshot.hasChild("count")) {
long c = dataSnapshot.child("count").getValue(Long.class);
final DatabaseReference reference3 = FirebaseDatabase.getInstance()
.getReference(Utils.ALL_USERS).child(coupon_user_uid)
.child(Utils.USED_COUPONS).child(id);
reference3.child("coupon_id").setValue(id);
reference3.child("coupon_owner_uid").setValue(coupon_owner_uid);
reference3.child("count").setValue(c++)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
reference2.removeEventListener(valueEventListener1);
}
});发布于 2020-05-13 02:53:38
也许这是因为每次写操作完成时,监听器都会再次调用自己。尝试使用ListenerForSingleValueEvent,如下所示:
valueEventListener1 = reference2.addListenerForSingleValueEvent(new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
...............
...............
...............https://stackoverflow.com/questions/61754508
复制相似问题