Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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 在Android中检索文本视图时不显示Firebase实时数据库_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 在Android中检索文本视图时不显示Firebase实时数据库

Java 在Android中检索文本视图时不显示Firebase实时数据库,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,永远不会执行onCreate()方法。我只想把下面的数据带到4个文本视图。“Detail”是模型类。 运行应用程序时不会显示任何错误。 视图是一项活动。 这是java类 `public class view_temp extends AppCompatActivity { private view_temp viewTemp; public Detail detail; private TextView roomtemp, roomhuminity, bodypulse

永远不会执行onCreate()方法。我只想把下面的数据带到4个文本视图。“Detail”是模型类。 运行应用程序时不会显示任何错误。 视图是一项活动。

这是java

`public class view_temp extends AppCompatActivity {
    private view_temp viewTemp;
    public Detail detail;
    private TextView roomtemp, roomhuminity, bodypulse, bodytemp;
    private DatabaseReference mDatabase;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_temp);

        mDatabase = FirebaseDatabase.getInstance().getReference("heat-stroke-device");

        roomtemp = (TextView) findViewById(R.id.txt_room_temp);
        roomhuminity = (TextView) findViewById(R.id.txt_huminity_temp);
        bodypulse = (TextView) findViewById(R.id.txt_body_pulse);
        bodytemp = (TextView) findViewById(R.id.txt_body_temp);

        mDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                for (DataSnapshot postSnapshot : snapshot.getChildren()) {
                    detail = postSnapshot.getValue(Detail.class);

                    String rtemp = detail.getRoomtemp();
                    String rhumidity = detail.getRoomhumidity();
                    String bpulse = detail.getBodypulse();
                    String btemp = detail.getBodytemp();

                    roomtemp.setText(rtemp);
                    roomhuminity.setText(rhumidity);
                    bodypulse.setText(bpulse);
                    bodytemp.setText(btemp);
                }

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                System.out.println("The read failed: " + databaseError.getMessage());
            }
        });
    }


}`

不需要在getReference()方法中添加项目的名称。要正确获取这些名称和相应的值,请使用以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String name = ds.getKey();
            double value = ds.getValue(Double.class);
            Log.d("TAG", name "/" + value);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
    }
};
rootRef.addListenerForSingleValueEvent(valueEventListener);
logcat中的结果将是:

RoomHumi/86.0
RoomTemp/30.8
bodyPulse/126.0
bodyTemp/29.0
如果钥匙始终固定,则只需使用:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        double roomHumi = dataSnapshot.child("RoomHumi").getValue(Double.class);
        Log.d("TAG", "RoomHumi" "/" + valueroomHumi);
        double roomTemp = dataSnapshot.child("RoomTemp").getValue(Double.class);
        Log.d("TAG", "RoomTemp" "/" + roomTemp);
        double bodyPulse = dataSnapshot.child("bodyPulse").getValue(Double.class);
        Log.d("TAG", "bodyPulse" "/" + bodyPulse);
        double bodyTemp = dataSnapshot.child("bodyTemp").getValue(Double.class);
        Log.d("TAG", "bodyTemp" "/" + bodyTemp);
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
    }
};
rootRef.addListenerForSingleValueEvent(valueEventListener);
您将在logcat中得到相同的结果。

只需更改行即可

mDatabase = FirebaseDatabase.getInstance().getReference("heat-stroke-device");


注意:您不需要将您的数据库名称放入引用中。

这行吗<代码>FirebaseDatabase.getInstance().getReference().getReference(“中暑设备”)与数据类型冲突,比如
stringroothumi
,但您要求的是双重数据type@Ashish接得好,阿什。刚刚更新了我的答案。Thanks@AlexMamo它工作正常。谢谢你。如果你认为我的回答也有助于未来的FialBasic开发人员,请考虑投票表决。▲). 我真的很感激。谢谢!
mDatabase = FirebaseDatabase.getInstance().getReference();