Java 在Android中检索文本视图时不显示Firebase实时数据库
永远不会执行onCreate()方法。我只想把下面的数据带到4个文本视图。“Detail”是模型类。 运行应用程序时不会显示任何错误。 视图是一项活动。 这是java类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
`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();