永远不会输入ValueEventListener

时间:2017-02-18 22:04:33

标签: android firebase firebase-realtime-database

我有一个ValueEventListener,永远不会到达内部代码。我的应用程序正在验证,但我无法检索数据,我不确定我缺少什么。在下面的代码中,当我检查时,uid具有正确的值,并且数据路径(“Users / [uid]”)是正确的,但是从未到达值事件侦听器中的任何内部代码。我也尝试将听众放在根部,结果相同。

我使用菜单选项设置了Firebase,将身份验证和实时数据库添加到我的应用中;身份验证工作正常,所以我想知道是否还需要为实时数据库配置其他东西?我已阅读文档并浏览了许多示例,但我看不到任何我遗漏的内容。

uid = FirebaseAuth.getInstance().getCurrentUser().getUid().toString();
    DatabaseReference userRef = ref.child("Users").child(uid).getRef();

    ValueEventListener userListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            User user = dataSnapshot.getValue(User.class);
            if (user == null) {
                SettingsLoad();
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.e("User", "User not found" );
        }
    };

    userRef.addListenerForSingleValueEvent(userListener); 

1 个答案:

答案 0 :(得分:0)

试试这个! 我刚刚添加了其他条件并记录或烘烤结果!!

uid = FirebaseAuth.getInstance().getCurrentUser().getUid().toString();
        DatabaseReference userRef = ref.child("Users").child(uid).getRef();

    ValueEventListener userListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            User user = dataSnapshot.getValue(User.class);
            if (user == null) {
                SettingsLoad();
            }
**else {
Log.d("tag","User Found!");
}**
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.e("User", "User not found" );
        }
    };

    userRef.addListenerForSingleValueEvent(userListener);