我正在尝试在用户按下途中按钮后将我的 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
添加回答
举报
0/150
提交
取消