没有调用Firebase onDataChange

时间:2016-02-26 01:13:37

标签: android firebase

我正在使用Firebase为我的Android应用。我已经使用类似的东西在我的代码中的多个位置成功检索了信息:

dbRef = new Firebase(Constants.URL_DB);
childRef = dbRef.child(Constants.KEY_CHILD);
objectRef = childRef.child(objectId); 

// Log the URL to the object.
// This has been verified. The path is good.
Log.d("DEBUG", "To String: " + objectRef.toString()); 

childRef.addValueEventListener(new ValueEventListener()
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        Log.d("DEBUG", "Success");
    }

    @Override
    public void onCancelled(FirebaseError firebaseError) {
        Log.e("DEBUG", "Failure");
    }
});

完全相同的代码已在另一个活动中成功使用但由于某种原因,它在特定活动中不起作用(onDataChange永远不会被调用,也不会被onCancelled)。可能是其他活动中的Firebase会话与此相冲突吗?我看到了可以解决的问题:

Firebase.goOnline();
Firebase.goOffline();

虽然我不确定我明白那些确切的做法。也许是因为我以某种方式无法访问push()添加了他的ID的孩子?

更新

我在objectRef中成功写入了数据库,但仍然没有调用onDataChange()

1 个答案:

答案 0 :(得分:1)

好的,我找到了导致问题的原因。我有一个空循环,因为我需要继续信息,它以某种方式阻止了数据库中的事件。我在onCreate()

中有类似的内容
childRef.addValueEventListener(new ValueEventListener()
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        Log.d("DEBUG", "Success");
        object = snapshot.getValue(MyObject.class);
    }

    @Override
    public void onCancelled(FirebaseError firebaseError) {
        Log.e("DEBUG", "Failure");
    }
});

我在onResume()

中有了循环
while(object == null);

我为解决问题所做的是用以下代码替换循环:

if(object == null){
    // Do stuff
}

我在onResume()

中添加了对onDataChange()的电话