Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法在应用程序首次启动时使用firebase数据发送数据_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

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

Android 无法在应用程序首次启动时使用firebase数据发送数据,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,嘿,当应用程序第一次启动时,我正在尝试发送firebase数据。我正在尝试将数据(qid)从splash活动发送到所有其他活动 这是我在splash活动中调用的函数 public void setImageName() { DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference(); databaseReference.addValueEventListener(new

嘿,当应用程序第一次启动时,我正在尝试发送firebase数据。我正在尝试将数据(qid)从splash活动发送到所有其他活动

这是我在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秒的计时器,这样每当监听器获得值时,活动都会发生变化,但应用程序从未从第一个启动活动切换

是否有可以共享的崩溃日志?崩溃始终是我使用共享首选项共享的值的空指针异常@Tigger Android/Google常用的做事方式是尽可能在后台进行。我猜Firebase在初次运行时还没有注册完设备/应用程序组合,因此您的请求将返回
null
。一个选项是使用
AsyncTask
,检查
null
,等待,然后重试,直到结果不是
null
,并且在初始屏幕上显示一条消息,说明您正在执行一些初始运行操作-因此用户知道这是一次性延迟。嘿,我尝试过了,但活动没有改变。也就是说,侦听器在第一次timel̥@Tigger时没有获得值