无法在应用首次启动时使用firebase数据发送数据

时间:2017-04-14 06:02:21

标签: android firebase firebase-realtime-database

嘿我在第一次启动应用程序时尝试发送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秒的计时器,这样每当侦听器获取值时,活动会发生变化,但是应用程序永远不会从第一次启动活动切换。

0 个答案:

没有答案