大家好,我得到了一个空值,我不知道为什么..如果你能帮助我,我会很感激。
这是我在 Firebase 上的 json。
usuarios{
krum{
dni: "43193622"
email: "pedroccc"
login: "krum"
nombre:"pedro"
pass: "1234" }
这是我的方法:
login_text = (EditText) findViewById(R.id.txtLogin);
点击监听器:
final String log_child = login_text.getText().toString();
final String pass_child = pass_text.getText().toString();
mDatabase = FirebaseDatabase.getInstance().getReference("usuarios").child(log_child);
mDatabase.child("pass").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String mpass = dataSnapshot.getValue(String.class);
pass = mpass;
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
然后我将 pass 与 pass_child 与 equals 进行比较,我发现 pass 为空。知道吗?谢谢
PD。在 Firebase 中,所有设置都是真实的
最佳答案
试试这个:
final String log_child = login_text.getText().toString();
final String pass_child = pass_text.getText().toString();
mDatabase = FirebaseDatabase.getInstance().getReference("usuarios").child(log_child);
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data : dataSnapshot.getChildren()){
String mpass = data.getValue().toString();
pass = mpass;
if(pass.equals(pass_child)){
//code here
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
添加 for 循环将使您能够从数据库中获取通行证。由于 onDatachange
是异步的(意味着它不会等到它完成检索数据,它会在它之后转到其他方法,然后当它检索数据时它会返回到方法 onDatachange
) 那么你必须在方法 onDatachange
关于java - 比较来自 Firebase 的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47738352/