【问题标题】:onClick int Value update to Firebase Realtime DatabaseonClick int 值更新到 Firebase 实时数据库
【发布时间】:2020-06-30 10:18:24
【问题描述】:

**我需要帮助。我在开发应用程序时遇到了一些问题。这是我第一次使用 int 值。

假设用户在 Firebase 数据库中有一个 ID。在他手机号下的Balance节点中,如图所示,有“task”和“referral”2个int值。 firebase database 当有人将他的号码用作参考时,我想用他的旧推荐余额添加 int 20。 我尽我所能,但在将新值放入数据库后,余额值不断增加,直到应用程序崩溃。**

saveBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           
            creditRef();
        }
    });
}

private void creditRef() {
    ref = ref_mob.getText().toString();
    balData.child(ref).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot)
        {
            if (dataSnapshot.exists())
            {
                String old = dataSnapshot.child("referral").getValue().toString();

                double num1 = Double.parseDouble(old);
                double num2 = Double.parseDouble(String.valueOf(20));

                double sum = num1 + num2;

                HashMap<String, Object> balMap = new HashMap<>();
                balMap.put("referral", sum);

                balData.child(ref).updateChildren(balMap).addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task)
                    {
                        if (task.isSuccessful())
                        {
                            Toast.makeText(AddDetailsActivity.this, "Reference credited", Toast.LENGTH_SHORT).show();

                        }
                    }
                });

            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    增量操作最简单的解决方案是:

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference referralRef = rootRef.child("Balance").child("01555555125").child("referral");
    referralRef.setValue(ServerValue.increment(20));
    

    如果您不止于此,我建议您使用交易,正如我在以下帖子中的回答中所解释的那样:

    How to save users score in firebase and retrieve it in real-time in Android studio

    【讨论】:

    • 非常感谢。您的解决方案运行良好。
    猜你喜欢
    • 1970-01-01
    • 2021-10-04
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多