为了账号安全,请及时绑定邮箱和手机立即绑定

Firebase 数据不断循环

Firebase 数据不断循环

慕尼黑5688855 2023-08-04 15:14:36
我正在尝试在用户按下途中按钮后将我的 mcustDelivery 状态从 Firebase 中的“接受”更新为“途中”。但每当我按下途中按钮时,firebase 都会更改为“途中”并立即更改回“接受”。这是我的航路按钮的 setOnClickListener。OrderStatus.Java     enroute.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mDatabase.child(key).addListenerForSingleValueEvent(new ValueEventListener() {    @Override    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {        dataSnapshot.getRef().child("mcustDeliveryStatus").setValue("Enroute");        enroute.setImageResource(R.drawable.greenenroute);        deliver.setImageResource(R.drawable.bluedeliver);        enroute.setMaxWidth(266);        enroute.setMaxHeight(150);        deliver.setMaxWidth(266);        deliver.setMaxHeight(150);    }    @Override    public void onCancelled(@NonNull DatabaseError databaseError) {    }});            }        });下面的代码是我在 ViewNewOrder.java 上获取已接受状态的地方 accept.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) { mDatabase.child(getKey()).addValueEventListener(new ValueEventListener() {@Overridepublic void onDataChange(@NonNull DataSnapshot dataSnapshot) {    dataSnapshot.getRef().child("mcustDeliveryStatus").setValue("Accepted");    Intent orderStatus = new Intent(ViewOrderRequest.this, orderStatus.class);    startActivity(orderStatus);    Toast.makeText(getApplicationContext(),"notification sent to customers",Toast.LENGTH_LONG).show();    //start new activity show root map}@Overridepublic void onCancelled(@NonNull DatabaseError databaseError) {    Toast.makeText(getApplicationContext(),"not updates",Toast.LENGTH_LONG).show();}});} });
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

您使用 addValueEventListener 来接受您要更改同一引用中的值的请求很简单。于是addValueEventListener触发起来,再次改变值来接受。

private DatabaseReference mDatabase;

mDatabase = FirebaseDatabase.getInstance().getReference();    

mDatabase.child(getKey()).child("mcustDeliveryStatus").setValue("Accepted")

或简单修复将 addValueEventListener 更改为 addListenerForSingleValueEvent


查看完整回答
反对 回复 2023-08-04
  • 1 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信