我尝试过,当用户按下按钮时,它会检测它是否在“ Disponible” Pedido值,“ Enviado” Pedido值中,或者它是否没有直接生成那些子级,但是每当我按下按钮时,它都会生成即使我从数据库中将值更改为“ Enviado”,也可以将“ Disponible”中的子项
我尝试更改if和else的位置,但未做任何更改
public void onClick(DialogInterface dialog, int i) {
if (i == 0)
{
PedidosRef.child(currentUserID).child(profileTelefono).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChild("Disponible"))
{
Intent intent = new Intent(getContext(), PedidosActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
else if (dataSnapshot.hasChild("Enviado"))
{
Toast.makeText(getContext(), "Ocupa2", Toast.LENGTH_SHORT).show();
}
else
{
HashMap<String, Object> userdataMap = new HashMap<>();
userdataMap.put("Pedido", "Disponible");
PedidosRef.child(currentUserID).child(profileTelefono).updateChildren(userdataMap)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful())
{
PedidosRef.child(profileTelefono).child(currentUserID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
HashMap<String, Object> userdataMap = new HashMap<>();
userdataMap.put("Pedido", "Disponible");
PedidosRef.child(profileTelefono).child(currentUserID).updateChildren(userdataMap)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Intent intent = new Intent(getContext(), PedidosActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
});
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
我想要实现的是可以识别出它在“ Enviado” Pedido值中,并且不会在“ Disponible” Pedido中再次生成,因此,如果它在“ Enviado” Pedido值中,则将不允许更改活动,如果它检测到“ Disponible” Pedido值已经存在,请访问活动