我正在尝试通过从应用程序中获取文本来验证管理员。我已经尝试使用数据对象模型并存储细节,但这不是必需的。我已经在没有循环的其他类中尝试了这个代码,它运行正常。
databaseReference = FirebaseDatabase.getInstance().getReference("Preschools");
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot preschool : dataSnapshot.getChildren())
{
for(DataSnapshot admin : preschool.getChildren())
{
String f_em = (String) admin.child("Admin").child("Email").getValue();
String f_pa = (String) admin.child("Admin").child("Password").getValue();
if(emailAddress.getText().toString().equals(f_em) && password.getText().toString().equals(f_pa))
{
flag = true;
}
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(_2_Login.this, "Unable to reach firebase", Toast.LENGTH_SHORT).show();
}
});
Logacat:Image Here
在if条件中返回False。我无法弄清楚逻辑中的错误。
答案 0 :(得分:0)
错误:如果凭据相同则不中断。 以下是正确的代码:
databaseReference = FirebaseDatabase.getInstance().getReference("Preschools");
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot preschool : dataSnapshot.getChildren())
{
if(emailAddress.getText().toString().equals(preschool.child("Admin").child("Email").getValue()) &&
password.getText().toString().equals(preschool.child("Admin").child("Password").getValue()))
{flag=true; break;}
}