Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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
Java 正在尝试从Firebase数据库在android应用程序中输出_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 正在尝试从Firebase数据库在android应用程序中输出

Java 正在尝试从Firebase数据库在android应用程序中输出,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在做一个项目,当传感器跳闸时,它将数据发送到Firebase实时数据库,然后在Android应用程序中输出。Firebase会在数据进入数据库后为其创建一个唯一的密钥,因此我不确定如何检索数据 我尝试了一些代码来输出数据,但它只是使应用程序崩溃。应用程序打开到试图显示数据的页面 DatabaseReference databaseReference = FirebaseDatabase.getInstance.getReference Query lastQuery = datab

我正在做一个项目,当传感器跳闸时,它将数据发送到Firebase实时数据库,然后在Android应用程序中输出。Firebase会在数据进入数据库后为其创建一个唯一的密钥,因此我不确定如何检索数据

我尝试了一些代码来输出数据,但它只是使应用程序崩溃。应用程序打开到试图显示数据的页面

DatabaseReference databaseReference =
FirebaseDatabase.getInstance.getReference

    Query lastQuery = databaseReference.child("sensor").orderByKey().limitToLast(1);
    lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String message = dataSnapshot.child("Detection").getValue().toString();
            sensorValue.setText(message);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            //Handle possible errors.
        }
    });

当查询数据库以获取检测属性的值时,需要使用getChildren方法循环遍历DataSnapshot对象,如下所示:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query lastQuery = rootRef.child("sensor").orderByKey().limitToLast(1);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String detection = ds.child("Detection").getValue(String.class);
            Log.d(TAG, detection);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
lastQuery.addListenerForSingleValueEvent(valueEventListener);
我引述:当您对Firebase数据库执行查询时,可能会有多个结果。因此,快照包含这些结果的列表。即使只有一个结果,快照也将包含一个结果列表

日志中的结果将是:

2019-04-22 13:58:58

如果应用程序崩溃,则会出现堆栈跟踪。请在logcat上查找,并将其添加到您的问题中,同时请提供更详细的数据库截图。我已经更新了此截图。在LogcatAt中的堆栈跟踪上没有签名该错误发生在哪一行代码上?请不要发布堆栈跟踪的屏幕截图。复制粘贴到可能重复的作品!非常感谢!不客气,干杯!