【发布时间】:2016-10-16 03:15:09
【问题描述】:
这是我当前的代码,但它不起作用。
我正在尝试使用 Firebase 实时数据库在不监听更改的情况下检索单个字符串值 (DATA)
但每当我运行此代码时,我都会收到 email[0] 为空。
而且Log.e("Email#1", "hello"); 从未出现在我的 logcat 中,让我感觉它从未真正进入 addListenerForSingleValueEvent()。
username=(EditText)findViewById(R.id.username);
password=(EditText)findViewById(R.id.password);
Firebase.setAndroidContext(this);
final Button login=(Button)findViewById(R.id.loginbtn);
final Firebase ref=new Firebase("//fir-learn-4991c.firebaseio.com/Users/Sriharsha/email");
//assert login != null;
assert login != null;
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
login.setText("Loading...");
final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference dref=database.getReference("email");
final String user=username.getText().toString();
final String[] email = new String[1];
dref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {
Message post = dataSnapshot.getValue(Message.class);
Log.e("Email#1","hello yo");
//System.out.println(post);
//Map<String, Object> newPost = (Map<String, Object>) dataSnapshot.getValue();
email[0]=post.getEmail();
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
这是类:消息:-
public class Message {
private String email;
public Message(){
}
public void message(String email)
{
this.email=email;
}
public String getEmail()
{
return email;
}
}
这是我的 Firebase 数据库: Firebase database picture
【问题讨论】:
-
您的 dref 默认指向数据库的根目录。试试这个:DatabaseReference dref=database.getReference();并像这样设置监听器: dref.child("Users").addListenerForSingleValueEvent
标签: android firebase firebase-realtime-database