Java 为什么我的addValueEventListener不能正常工作?

Java 为什么我的addValueEventListener不能正常工作?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我目前正在尝试使用Android studio和java为Android应用程序实现一个配置文件页面。我有一个将用户配置文件信息上传到firebase的活动,现在我正试图让我的配置文件活动从firebase获取用户信息并将其显示在屏幕上。为了做到这一点,我做了一个名为contactInfo的数据库引用,它引用了给定用户配置文件信息所在的位置。然而,当我试图通过调试器运行此代码段时,addValueEvent handers中的所有代码都没有被访问过,我不知道为什么。如果有人对这个问题有任何想法或

我目前正在尝试使用Android studio和java为Android应用程序实现一个配置文件页面。我有一个将用户配置文件信息上传到firebase的活动,现在我正试图让我的配置文件活动从firebase获取用户信息并将其显示在屏幕上。为了做到这一点,我做了一个名为contactInfo的数据库引用,它引用了给定用户配置文件信息所在的位置。然而,当我试图通过调试器运行此代码段时,addValueEvent handers中的所有代码都没有被访问过,我不知道为什么。如果有人对这个问题有任何想法或解决方法,我将非常感激

        contactInfo.child("email").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            contactEmail = snapshot.getValue(String.class);
            email.setText(contactEmail);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {
            Toast.makeText(Profile.this, "Failed to get email", Toast.LENGTH_SHORT).show();
        }
    });

    contactInfo.child("address").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            contactAddress = snapshot.getValue(String.class);
            Toast.makeText(Profile.this, "Got Addy", Toast.LENGTH_SHORT).show();
            address.setText(contactAddress);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {
            Toast.makeText(Profile.this, "Failed to get addy", Toast.LENGTH_SHORT).show();
        }
    });

    contactInfo.child("phoneNumber").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            contactPhone = snapshot.getValue(String.class);
            phoneNumber.setText(contactPhone);
        }

不要单步执行代码,而是在
onDataChange
onCancelled
中的第一行设置断点。如果现在再次在调试器中运行代码,它是否到达这些断点中的任何一个?我在其中一个oneDataChange的第一行上设置了一个断点。在通过调试器运行之后,看起来这两条语句都没有到达。这很奇怪。我不知道它为什么会这样做。您是否也在取消的
上设置了断点?如果您连接到Firebase服务器,则会调用其中一个。如果两者都没有被调用,通常意味着你没有连接。我在OnCancelled下为行设置了一个断点,但是当我运行调试器时,应用程序永远不会到达这一行。基本上,我点击一个按钮打开一个新的活动,这段代码在这个活动的onCreate部分下。这很奇怪,因为我不认为我缺少连接是问题所在,因为我可以在应用程序的其他部分连接到FireBase。你可以试试这个,看看你是否真的连接到了。