尝试读取数据时未调用Firebase侦听器

时间:2017-10-27 19:19:05

标签: android firebase firebase-realtime-database

我是新手使用Firebase数据库并且还在慢慢学习Android。无论如何,我试图将数据存储在Firebase数据库中并且成功了。 现在我正在尝试从Firebase数据库中读取数据,但遗憾的是我不能这样做。

我从Firebase数据库中查询数据但是仍然无法使其正常工作。

以下是存储在Firebase实时数据库中的数据。

This is the stored data in firebase realtime database

以下是我的参考代码,我试图获取数据。 我已连接移动设备使用adb来调试Android应用程序。 在尝试调试时,我在onDataChange处保留了断点,但它从未被击中。 我可以在查询值中看到一些信息但我无法获得查询的完整信息。该值不包含我的查询结果。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_request);

    databaseRequests = FirebaseDatabase.getInstance().getReference("Requests");
    Query query = databaseRequests.orderByChild("requestNo").equalTo(11);
    query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Request request = dataSnapshot.getValue(Request.class);
            Log.d("CREATION"," Request.no:" + request.requestNo +" Request Purpose:" + request.requestPurpose);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

让我知道出了什么问题?我试图调试很多,但我确信我缺少了一些东西。

1 个答案:

答案 0 :(得分:1)

addListenerForSingleValueEvent()立即执行OnDataChange方法,并在执行该方法后,一旦它停止侦听它所附加的参考位置。

  

addListenerForSingleValueEvent为此位置的数据中的单个更改添加侦听器。该侦听器将使用该位置的数据值触发一次。

您需要使用addValueEventListener(),如何继续监听附加的查询或数据库引用。

  

addValueEventListener为此位置的数据更改添加侦听器。每次数据更改时,都会使用不可变的数据快照调用侦听器。

Link to addValueEventListener documentation