Firebase ValueEventListener根本没有触发
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Firebase ValueEventListener根本没有触发相关的知识,希望对你有一定的参考价值。
我只是试图触发这个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/tellMeWhen2Go/messages/"
作为数据库引用放在getReference()方法中。
DatabaseReference d = FirebaseDatabase.getInstance().getReference("privateChat/WiseNN/tellMeWhen2Go/messages/");
String data, message;
DatabaseReference d = FirebaseDatabase.getInstance().getReference("privateChat").child("WiseNN").child("tellMeWhen2Go").child("messages");
d.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
data = ds.child("data").getValue().toString();
message = ds.child("message").getValue().toString();
// similarly for sender & time
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
我正在写自己的答案,正如我刚才想到的那样。
我认为这是由于某种Firebase故障造成的。当我登录我的谷歌控制台时,我看到我没有数据库(其中没有任何内容),当我知道其实存在时。但是,这对于回调函数未触发的原因是有意义的。
奇怪的是,我从GitHub克隆了一个新的示例firebase安卓应用程序,在谷歌控制台中将其添加到我的Firebase应用程序,然后将新对象写入实时数据库(来自新的Android应用程序示例)。完成此操作后,我的整个firebase数据库结构再次出现。
之后,我回到了我最初工作的主应用程序,并使用之前存在的完全相同的代码调用firebase ...并且它有效。我知道这可能听起来不合理,但这实际上就是刚刚发生的事情。
你错过了.child(“短信”);
DatabaseReference DBRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference DBMsgsRef = DBRef.child("privateChat").child(senderUsername).child(recipeintUsername).child("messages").child(messagesKey).getRef();
以上是关于Firebase ValueEventListener根本没有触发的主要内容,如果未能解决你的问题,请参考以下文章
VueJS + Firebase 使用 Firebase 绑定
无法解决:com.google.firebase:firebase-ml-vision:24.1.3;无法解决:com.google.firebase:firebase-core:20.0.2
没有创建 Firebase 应用“[DEFAULT]” - 在 Flutter 和 Firebase 中调用 Firebase.initializeApp()
如何修复 Firebase 9.0 导入错误? “尝试导入错误:‘firebase/app’不包含默认导出(导入为‘firebase’)。”