Java 比较来自Firebase的数据
嗨,伙计们,我得到了一个空值,我不知道为什么。。如果你能帮助我,我将不胜感激 这是我在Firebase上的jsonJava 比较来自Firebase的数据,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,嗨,伙计们,我得到了一个空值,我不知道为什么。。如果你能帮助我,我将不胜感激 这是我在Firebase上的json usuarios{ krum{ dni: "43193622" email: "pedroccc" login: "krum" nombre:"pedro" pass: "1234" } 这是我的方法: login_text = (EditText) findViewById(R.id.txtLogin); onCl
usuarios{
krum{
dni: "43193622"
email: "pedroccc"
login: "krum"
nombre:"pedro"
pass: "1234" }
这是我的方法:
login_text = (EditText) findViewById(R.id.txtLogin);
onClickListener:
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\u child进行比较,得出pass为null。。有什么想法吗?多谢各位
警察局。在Firebase中,所有设置均为true请尝试以下操作:
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循环将使您能够从数据库获得pass。由于
onDatachange
是异步的(意味着它不会等到检索完数据后再转到其他方法,然后在检索数据时返回到方法onDatachange
)然后你必须在方法内部进行比较onDatachange
你在哪里进行比较?然后我使用。。。如果(pass.equals(pass_child))答案有效吗?请检查答案中的编辑,并提供答案。现在,您共享的代码中缺少两件事:1)我们无法知道log\u child
的值。尝试用硬编码字符串重现问题,然后用该字符串更新问题中的代码。2) 你没有分享你如何/在哪里进行比较。把它添加到重现问题的最小片段中,我们将有更好的机会看到发生了什么。