Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
Android Firebase实时数据库:未触发addListenerForSingleValueEvent_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android Firebase实时数据库:未触发addListenerForSingleValueEvent

Android Firebase实时数据库:未触发addListenerForSingleValueEvent,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在开发一个本地android应用程序,我有一个工作代码,可以使用firebase电子邮件/密码身份验证对我的用户进行身份验证。身份验证后,我将用户的详细信息存储在firebase relatime数据库中 唯一的问题是,我试图查询数据库以检查用户是否已经存在。下面是执行此查询的代码段,但是,流似乎没有输入“addListenerForSingleValueEvent”部分: private void firstTimeUser(final String chkMail){ myRe

我正在开发一个本地android应用程序,我有一个工作代码,可以使用firebase电子邮件/密码身份验证对我的用户进行身份验证。身份验证后,我将用户的详细信息存储在firebase relatime数据库中

唯一的问题是,我试图查询数据库以检查用户是否已经存在。下面是执行此查询的代码段,但是,流似乎没有输入“addListenerForSingleValueEvent”部分:

private void firstTimeUser(final String chkMail){

    myRef.child("profile").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            userExists = dataSnapshot.hasChild(chkMail);
            Log.d(TAG, "UserCheck1= " + userExists);
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {

            Toast.makeText(getApplicationContext(), "An unexpected error occurred!", Toast.LENGTH_SHORT).show();
        }
    });
    Log.d(TAG, "UserCheck2 = " + userExists);

}
我进行了一些调查:

  • 调试显示代码没有进入onDataChange或onCancelled内部
  • 变量chkMail不是null(在调试中再次显示)
  • 应用程序正在连接到正确的firebase DB,并且存在子“配置文件”
  • 如果我删除此检查(无论用户是否存在于数据库中),则使用用户详细信息更新firebase DB的下一部分将顺利完成,并且数据在firebase仪表板上可见。但是,只有在用户不存在的情况下才会发生这种情况 我也看过线。 将日志语句合并到onDataChange中(如上面的代码段所示),但是UserCheck1没有记录在任何地方,这表明正在跳过执行


    你们这些好人有什么建议吗?

    尝试使用:
    抛出databaseError.toException()onCancelled
    方法中的code>。它返回什么?可以添加数据结构吗?可以在onCancelled()中记录databaseError吗?我相信这可能是因为数据库规则。如果您的用户尚未通过身份验证,而您试图访问db值,则会出现错误。@Alex Mamo:将该行添加到onCancelled方法中,结果相同。返回的异常与“userExists”值为null有关。@mark922:尝试在注释后向onCancelled方法添加日志,但结果仍然相同。用户的身份验证很好,我对此进行了检查。刚刚在新的跑步中再次确认。