2016-07-25 1 views
0

나는이처럼 보이는 중포 기지 데이터베이스가 있습니다안드로이드 중포 기지하는 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()은 ID 대신 "child1"을 반환하기 때문에 작업하지 않습니다. dataSnapshot.getRef().getKey()에 대해서도 동일한 작업을 수행합니다. dataSnapshot.getRef().getParent().getKey()을 사용하면 "chat"이 다시 나타납니다. DataSnapshot의 키를 다시 얻으려면 어떻게해야합니까? 나는 지금 매우 혼란 스럽다.

+0

데이터베이스 콘솔에서 일부 형식의 데이터가 표시된 스크린 샷을 게시 할 수 있습니까? –

+0

나는이 질문에 망쳐 놓은 것처럼 보입니다. 문제는 "ValueEventListener"에서 나중에 다른 리스너를 추가하고 실수로'MyClass.this' 대신에'this'를 사용했다는 것을 알게되었습니다. 미안 해요. – Nick

+0

마음에 자신의 실수를 설명하는 자체 응답을 추가 한 다음 허용 된 것으로 표시하여이 질문을 닫습니다. –

답변

0

위의 코드에 문제가 있음이 밝혀졌습니다. 또한 ValueEventListener에 또 다른 쿼리를 작성하여 우연히 수신기를 MyClass.this 대신 this으로 설정했습니다. ValueEventListener (this)은 다른 것을 찾으므로 쿼리가 호환되지 않습니다.

관련 문제