首页 > 解决方案 > Firebase OnDataChange 未过渡到下一个活动

问题描述

我有一些问题。我想检索订单状态的值,首先,当客户创建订单时,该值将添加到火力库“待处理”之后,客户将等到司机接受订单,然后将值从“待处理”更改到“接受”。


public class C_Offers extends AppCompatActivity {
    String OrderID;
    String phoneNO;
    String State = null;
    DatabaseReference databaseReference;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_c_offers);


        Bundle bundle = getIntent().getExtras();
        if (bundle != null) {
            phoneNO = bundle.getString("Phone");
            OrderID = bundle.getString("OrderID");
        }
        databaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child("Customer").child(phoneNO).child("Order").child(OrderID);
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                State = dataSnapshot.child("State").getValue(String.class);
                Toast.makeText(C_Offers.this, "State : "+State, Toast.LENGTH_SHORT).show();
                if (State.equals("Accepted")) {
                    startActivity(new Intent(C_Offers.this, C_Order.class));
                }
            }

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

            }
        });

    }

}

当使用这个

Toast.makeText(C_Offers.this, "State : "+State, Toast.LENGTH_SHORT).show();

将打印“Pending”,更改驱动程序端的值后将更改并打印“Accepted”

确切的问题在这个里面

if (State.equals("Accepted")) {
   startActivity(new Intent(C_Offers.this, C_Order.class));
}

首先不读取并关闭应用程序,返回布局我需要检查 Firebase 的值是否更改为“已接受”,如果更改则转到新活动,这是我想要的

标签: javaandroidfirebasefirebase-realtime-database

解决方案


推荐阅读