我的申请在第43行崩溃:
float value = dataSnapshot.child("temp").getValue(float.class);
当我从addChildEventListener和Datasnapshot中删除.child时,应用程序将显示数据库中的浮点值。
我的目标是显示一个浮点值,然后添加另一行以显示我的数据库将保存的Humidity值。
所以我将尝试。儿童(" temp")。孩子(" humi")将显示在列表视图上。
任何人都可以引导我朝着正确的方向前进,或者帮助我解决为什么我无法指定子条目。
ListView listview = (ListView) findViewById(R.id.listview);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, list);
listview.setAdapter(adapter);
//INITIALIZE FIREBASE DB
db = FirebaseDatabase.getInstance().getReference();
db.child("temp").limitToLast(1).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
float value = dataSnapshot.child("temp").getValue(float.class);
list.add("System Temperture: " + value);
adapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
adapter.clear();
float value = dataSnapshot.child("temp").getValue(float.class);
list.add("System Temperture: " + value);
adapter.notifyDataSetChanged();
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
来自firebase的JSON值
{
"humi" : {
"-KaxKLD00Ib97d1dRbvR" : 17.0
},
"temp" : {
"-KaxKL8G17y4ezfdBMDP" : 21.0
}
}
logcat的
01-20 18:32:18.675 16935-16935/com.m.j.project.josephmay E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.m.j.project.josephmay, PID: 16935
java.lang.NullPointerException: Attempt to invoke virtual method 'float java.lang.Float.floatValue()' on a null object reference
at com.m.j.project.josephmay.MainActivity$1.onChildAdded(MainActivity.java:43)
at com.google.android.gms.internal.zzblz.zza(Unknown Source)
at com.google.android.gms.internal.zzbnz.zzYj(Unknown Source)
at com.google.android.gms.internal.zzboc$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7229)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
01-20 18:32:26.645 16935-17099 / com.m.j.project.josephmay W / DynamiteModule:找不到com.google.firebase.auth的本地模块描述符类。 01-20 18:32:26.645 16935-17099 / com.mjproject.josephmay W / ResourcesManager:getTopLevelResources:/data/app/com.google.android.gms-1/base.apk / 1.0在com.mjproject中运行包com.google.android.gms的.josephmay rsrc
答案 0 :(得分:0)
我认为我遇到了类似的问题,弗兰克的回应对我有帮助:https://groups.google.com/forum/#!topic/firebase-talk/-cdTDFBOmMw。
在Firebase中创建新记录时,您是分别对“ humi”和“ temp”进行setValue()还是对整个对象进行setValue()?尝试将其切换为整个对象的setValue()。