iv一直致力于使用firebase数据库的新应用程序,其中存储了几个布尔值。 important_job并洗了
"TEST" : {
"TEST" : {
"Current_job" : {
"important_job" : true,
"washed" : true
},
"colour" : "test",
"date" : "test",
"doors" : "test",
"enginesize" : "test",
"fuel" : "test",
"lotnumber" : "test",
"manufacturer" : "test",
"model" : "test",
"reg" : "TEST"
}
我试图通过使用此方法在我的应用中调用这些布尔值
public Harrop_JobListener(View relativeLayout) {
this.relativeLayout = relativeLayout;
}
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot valueSnapshot: dataSnapshot.getChildren()){
a = valueSnapshot.child("important_job").getValue(Boolean.class)
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
}
然后我在我的复选框类中使用public Boolean,如下所示
harrop_jobListener = new Harrop_JobListener(myLayout);
dbref.addValueEventListener(harrop_jobListener);
cb1 = (CheckBox) myLayout.findViewById(R.id.cbimportant);
cb1.setChecked(harrop_jobListener.a);
cb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (cb1.isChecked()) {
dbref.child("important_job").setValue(true);
} else {
dbref.child("important_job").setValue(false);
}
}
});
但由于某种原因,我一直在我的logcat
中收到此错误java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference
at studios.p9p.harrop99.provaletercompanion.Checkbox_Helper.getCheckBoxes(Checkbox_Helper.java:54)
at studios.p9p.harrop99.provaletercompanion.HarropChildListener$1.onItemClick(HarropChildListener.java:100)
我已经检查过使用
获取正确的密钥和值 System.out.println(valueSnapshot.getKey());
System.out.println(valueSnapshot.getValue(Boolean.class))
返回正确的结果。所以我很困惑,我的错误再次lol欢呼
编辑****
这是我的dbref
dbref = db.getReference().child(registration).child(registration).child("Current_job");
注册孩子=当时用户将要使用的汽车
答案 0 :(得分:1)
如果我理解正确,你应该将这个db子句的默认值设置为布尔值,从你的问题来看,似乎在检查数据库的更新时,它不会及时检索新的值。为防止错误发生,请设置此默认值并告诉我们是否继续。我的应用程序曾经发生类似的考验。