2017-06-13 144 views
0

我正在创建一个注册页面,我要检查输入的特定电子邮件或输入的移动电话是否已存在或不。我认为_emailText作为一个字符串不被接受,但如何获取电子邮件和密码。 这里是下面的代码:

public boolean userExist(){ 
    //private Firebase mRef = new Firebase("https://abcdefgh.firebaseio.com/users/"); 
    mRef.child(_emailText.getText().toString()).addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      if(dataSnapshot.exists()){ 
       Toast.makeText(getBaseContext(), "Email already exist. Please choose a different one", Toast.LENGTH_SHORT).show(); 
       _emailText.setError("Email already exist. Please choose a different one"); 
       valid = false; 
      } 
      else{ 
       email = _emailText.getText().toString(); 
      } 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 

     } 
    }); 

    mRef.child(_mobileText.getText().toString()).addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      if(dataSnapshot.exists()){ 
       _mobileText.setError("Mobile Number already exist"); 
       valid = false; 

      } 
      else{ 
       mobile = _mobileText.getText().toString(); 

      } 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 

     } 
    }); 


    return valid; 
} 

和数据库结构是这样的:

+0

您的钥匙不能包含句点,如错误状态。替换他们与其他字符 –

+0

请编辑您的文章,包括您的数据库的结构 –

+0

结构是在“abcdefgh”有一个用户,如果你注册然后电子邮件,移动和所有创建,我在尝试要做的是在注册时获取这些电子邮件和手机,并比较我的edittext包含的内容。 – divJ

回答

1

你的孩子关键是5Ri...,而不是电子邮件

你要找的这个

mRef = new Firebase("https://abcdefgh.firebaseio.com/"); 
mRef.child("users") 
    .orderByChild("email") 
    .equalTo("[email protected]").addListener...() { 

}; 
+0

我这样做了,但我点击了创建帐户按钮,它仍然会进行下一个活动,然后调用Toast错误。但它不应该,它应该首先进入侦听器方法并调用侦听器方法,并且不应该首先进入下一个活动。 – divJ

+0

但原来的错误信息消失了吗? –

+1

是的,原始问题已解决 – divJ