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个赞
这是一个异步操作,当数据到达时,将触发回调。您的代码将按顺序执行,这就是为什么您在 中未获得任何值的原因。onDataChange
startActivty
cCESnapshot
在侦听器内移动代码。startActivity
但要小心,因为每次调用点击侦听器时,您都会添加一个 value 事件侦听器。这样,您每次单击都会有多个调用,因此多个 .onItemClick
onDataChange
startActivities
相反,我建议使用仅在数据发生一次更改后才会触发的。addListenerForSingleValueEvent
添加回答
举报