嘿我在第一次启动应用程序时尝试发送firebase数据。我正在尝试将数据(qid)从splash活动发送到所有其他活动。
这是我在启动活动中调用的函数
public void setImageName() {
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
databaseReference.addValueEventListener(new ValueEventListener() {
public void onDataChange(DataSnapshot dataSnapshot) {
Calendar c = Calendar.getInstance();
long timeStampLong = (long) dataSnapshot.child("time").child("timestamp").getValue();
SimpleDateFormat questiondateFormat = new SimpleDateFormat("dd/MM/yyyy");
String currentDate = questiondateFormat.format(new Date(timeStampLong));
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss a");
SimpleDateFormat sdf1 = new SimpleDateFormat("dd/MM/yyyy");
Date d = null, d1 = null;
try {
d1 = sdf1.parse(currentDate);
d = sdf.parse(currentDate + " " + "08:00:00 PM");
} catch (ParseException e) {
e.printStackTrace();
}
c.setTime(d1);
c.setTime(d);
long time = c.getTimeInMillis();
final String[] temimage = new String[1];
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("questions");
Query query = databaseReference.orderByChild("questionDate").equalTo(questiondateFormat.format(new Date(timeStampLong)));
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot userAnswerSnapshot : dataSnapshot.getChildren()) {
temimage[0] = userAnswerSnapshot.getRef().getKey();
sessionManager.addImageName(temimage[0]);
Log.e("", "on image" + temimage[0]); //the tenimage value is not getting transferred.
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
public void onCancelled(DatabaseError databaseError) {
}
});
databaseReference.child("time").child("timestamp").setValue(ServerValue.TIMESTAMP);
}
此功能正在完成工作但未在第一次启动时发送值导致应用程序崩溃。
崩溃导致java的空指针异常。所有价值所在的地方 被转移的是空的。
编辑:我尝试记录这些值,并检查是否在第一次应用启动时调用了侦听器,但它从未到达日志。所以这是一个问题所以它在侦听器内切换了意图,而不是使用4秒的计时器,这样每当侦听器获取值时,活动会发生变化,但是应用程序永远不会从第一次启动活动切换。