2016-07-25 53 views
0

我有一个火力地堡数据库,看起来像这样:的Android火力地堡信息getKey()返回的孩子,而不是

appname: 
    chat: 
    [ID]: 
     child1:value 
     child2:value 

我查询这样的:

DatabaseReference ref = rootReference.child("chat").child([ID]); 
ref.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
    if (dataSnapshot.exists()) { 
     long index = Long.parseLong(dataSnapshot.getKey()); 
    } 
    } 

的问题是,这个查询没有按不工作,因为dataSnapshot.getKey()返回“child1”而不是ID。它为dataSnapshot.getRef().getKey()做同样的事情。如果我使用dataSnapshot.getRef().getParent().getKey(),我会收到“聊天”。如何取回DataSnapshot的钥匙?我现在非常困惑。

+0

您可以从数据库控制台发布屏幕截图,以显示此格式的一些数据吗? –

+0

看起来我搞砸了这个问题。原来问题出现在'ValueEventListener'后面,我添加了另一个监听器,并且意外地使用了'this'而不是'MyClass.this'。对不起所有。 – Nick

+0

介意添加自我解答,解释您的错误,然后将其标记为已接受,以便此问题已关闭? –

回答

0

原来问题不在上面的代码中。进一步到ValueEventListener我做了另一个查询,并意外地将听众设置为this而不是MyClass.this。 在this正在寻找别的东西,所以查询是不兼容的。