2 回答

TA貢獻1871條經驗 獲得超13個贊
是異步的,因此使用檢索到的數據的唯一方法是 inside ,例如:onDataChange()onDataChange()
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
cCESnapshot = dataSnapshot.child(uid).child("currChallenges").child(challengeList.get(position));
Intent intent = new Intent();
intent.setClass(this, ChallengeView.class);
intent.putExtra("snapshot", cCESnapshot.toString());
intent.putExtra("name", challengeList.get(position));
startActivity(intent);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});

TA貢獻1921條經驗 獲得超9個贊
這是一個異步操作,當數據到達時,將觸發(fā)回調。您的代碼將按順序執(zhí)行,這就是為什么您在 中未獲得任何值的原因。onDataChange
startActivty
cCESnapshot
在偵聽器內移動代碼。startActivity
但要小心,因為每次調用點擊偵聽器時,您都會添加一個 value 事件偵聽器。這樣,您每次單擊都會有多個調用,因此多個 .onItemClick
onDataChange
startActivities
相反,我建議使用僅在數據發(fā)生一次更改后才會觸發(fā)的。addListenerForSingleValueEvent
添加回答
舉報