Firebase 数据不断循环

我正在尝试在用户按下途中按钮后将我的 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() {

@Override

public 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


}


@Override

public void onCancelled(@NonNull DatabaseError databaseError) {

    Toast.makeText(getApplicationContext(),"not updates",Toast.LENGTH_LONG).show();

}

});


} });


慕尼黑5688855
浏览 108回答 1
1回答

12345678_0001

您使用 addValueEventListener 来接受您要更改同一引用中的值的请求很简单。于是addValueEventListener触发起来,再次改变值来接受。private DatabaseReference mDatabase;mDatabase = FirebaseDatabase.getInstance().getReference();    mDatabase.child(getKey()).child("mcustDeliveryStatus").setValue("Accepted")或简单修复将 addValueEventListener 更改为 addListenerForSingleValueEvent
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java