【问题标题】:How to fetch data from firebase :如何从 firebase 获取数据:
【发布时间】:2018-03-24 08:49:21
【问题描述】:

我想获取日期字段,但下面的代码没有这样做。 Toast 显示为 null(字符串日期的值)。

公共字符串日期;

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState){
    DatabaseReference rootRef , demoRef;
    //database reference pointing to root of database
    rootRef = FirebaseDatabase.getInstance().getReference();
    //database reference pointing to demo node
    demoRef = rootRef.child("dates");

    demoRef.child("date").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            date = dataSnapshot.getValue(String.class);
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });
    Toast.makeText(getContext() , date , Toast.LENGTH_SHORT).show();
}

【问题讨论】:

  • toast 显示为 null,因为它是异步的
  • 甚至 Log.d() 给出相同的结果 null

标签: java android firebase firebase-realtime-database


【解决方案1】:

在 onDataChange 中添加 toast:

 demoRef.child("date").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        date = dataSnapshot.getValue(String.class);

Toast.makeText(getContext() , date , Toast.LENGTH_SHORT).show();

    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
    }
});

由于onDataChange是异步的,它在完成检索数据之前移动到另一个任务,那么你需要在方法中添加toast。

【讨论】:

  • 现在它显示这个错误......java.lang.NullPointerException:尝试调用虚拟方法'android.content.res.Resources android.content.Context.getResources()' 在空对象引用上
【解决方案2】:

使用此代码

ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
        // Get Post object and use the values to update the UI
        Post post = dataSnapshot.getValue(Post.class);
        // ...
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Getting Post failed, log a message
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
        // ...
    }
};

有关更多详细信息,请查看 Firebase 文档

https://firebase.google.com/docs/database/android/read-and-write

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多