Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.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 ValueEventListener根本不启动_Android_Firebase_Android Studio_Firebase Realtime Database - Fatal编程技术网

Android Firebase ValueEventListener根本不启动

Android Firebase ValueEventListener根本不启动,android,firebase,android-studio,firebase-realtime-database,Android,Firebase,Android Studio,Firebase Realtime Database,我只是想点燃这个Firebase ValueEventListener。我在监听器内部设置了断点,以检查它们是否正在发射,而不是。我不知道为什么它不起作用,因为我觉得一切都很好。是否有任何与Firebase相关的原因导致此应用程序无法工作 package sampleproj.wisen.android.sampleproj; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatAc

我只是想点燃这个Firebase ValueEventListener。我在监听器内部设置了断点,以检查它们是否正在发射,而不是。我不知道为什么它不起作用,因为我觉得一切都很好。是否有任何与Firebase相关的原因导致此应用程序无法工作

package sampleproj.wisen.android.sampleproj;

import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        DatabaseReference d = FirebaseDatabase.getInstance().getReference();
        d.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                int r = 0;
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

    }
}
更新: 以下是数据库的结构:


我已经尝试在最深的子级访问数据库。关键是检索两个用户之间的消息列表

    final String senderUsername = "WiseNN";
    final String recipeintUsername = "tellMeWhen2Go";
    final String messagesKey = "messages";
    DatabaseReference DBRef = FirebaseDatabase.getInstance().getReference();
            DatabaseReference DBMsgsRef = DBRef.child("privateChat").child(senderUsername).child(recipeintUsername).child(messagesKey).getRef();
尝试将privateChat/WiseNN/tellmewwhen2go/messages/作为getReference方法中的DB引用

DatabaseReference d = FirebaseDatabase.getInstance().getReference("privateChat/WiseNN/tellMeWhen2Go/messages/");
我正在写我自己的答案,因为我刚刚找到了答案

我认为这是由于某种火基故障造成的。当我登录我的谷歌控制台时,我看到我没有数据库,里面什么都没有,而我知道事实上有一个数据库。然而,这对于回调函数为什么没有启动是有意义的

奇怪的是,我从GitHub克隆了一个新的示例firebase android应用程序,将其添加到我在谷歌控制台的firebase应用程序中,然后从新的示例android应用程序向实时数据库写入一个新对象。完成此操作后,我的整个firebase数据库结构完全重新出现


在那之后,我回到了我最初开发的主应用程序,并使用与之前完全相同的代码调用了firebase…它成功了。我知道这听起来可能不太合理,但这确实是刚刚发生的事情。

你错过了

DatabaseReference DBRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference DBMsgsRef = DBRef.child("privateChat").child(senderUsername).child(recipeintUsername).child("messages").child(messagesKey).getRef();

共享您的数据库结构。我已上载要检索的文档的databasePost扩展结构的结构。已发布更新的数据库结构1。你的航海日志有错误吗?2.更改数据库引用DBMsgsRef=DBRef.childprivateChat.childsenderUsername.ChildRecipientUserName.childmessagesKey.getRef;到数据库引用DBMsgsRef=DBRef.childprivateChat.childsenderUsername.childRecipientUserName.childmessagesKey;3.检查您的数据库规则我已经尝试过:/privateChat,privateChat&privateChat/。这些似乎都不起作用。我可以知道privateChat中的数据是什么吗?要检索两个用户之间的消息列表,我认为您需要考虑数据结构的设计,因为Firebase对查询功能有限制。不确定为什么会对其进行升级…这与问题无关。这是误导。我希望这能解决你的问题。所以,接受答案并投票表决,这样对其他人也会有用。这和我上面的代码完全相同。但是,我已经复制/粘贴了您的代码并尝试运行它。它不起作用。我知道代码没有问题,有没有其他原因让听者不开火。可能与android studio版本或firebase配置有关?另一个原因可能是firebase规则。有关firebase规则,请参阅。我发现了它,它不是我之前所说的代码。我认为这是由于某种火基故障造成的。我以前使用过相同的代码调用firebase,没有任何问题。它只是突然停止了工作。我自己写了答案,因为没有一个答案对我有效。
DatabaseReference DBRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference DBMsgsRef = DBRef.child("privateChat").child(senderUsername).child(recipeintUsername).child("messages").child(messagesKey).getRef();