我想按如下方式检索结构:
课程>课程和GT;程序>扫描电镜> {主旨名称}个总>出勤> orderbykey.equalsTo(UID)
我有一个问题是迭代密钥是动态的主题,例如。这里的关键是 PA ,其他是 PC ,它将由用户动态推送,并且每个Sem都会有所不同。
我试过这个:
Query subjectQuery = mDatabaseRef.child("courses/"+user.getCourse()+"/"+user.getProgramme()+"/"+user.getSem()+"/subjects");
subjectQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
Log.d("subjects", String.valueOf(dataSnapshot.getChildrenCount()));
sub = new Subject[(int) dataSnapshot.getChildrenCount()];
int i = 0;
for (DataSnapshot subjectSnapShot: dataSnapshot.getChildren()){
sub[i] = new Subject(subjectSnapShot.getValue().toString());
Log.d("subject_class","sub["+i+"] : "+sub[i].getName());
i++;
}
}else{
Toast.makeText(DashboardActivity.this, "Data Not Found", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Toast.makeText(this, String.valueOf(sub.length), Toast.LENGTH_SHORT).show();
由于监听器为Async
,导致该应用崩溃并提供 NullPointerException
,因为sub
仍然为空
编辑:原因是获取主题并将其传递给片段。请建议是否有人有更好的方法解决问题