Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 比较来自Firebase的数据_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 比较来自Firebase的数据

Java 比较来自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

嗨,伙计们,我得到了一个空值,我不知道为什么。。如果你能帮助我,我将不胜感激

这是我在Firebase上的json

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) 你没有分享你如何/在哪里进行比较。把它添加到重现问题的最小片段中,我们将有更好的机会看到发生了什么。