【发布时间】:2019-07-06 10:44:46
【问题描述】:
应用程序正在构建且没有错误,但在运行时它会在 logcat 中出现以下错误:
java.lang.NullPointerException:尝试在 com.bwae.kuja.Main2Activity.onDataChange 的空对象引用上调用虚拟方法“int java.lang.Integer.intValue()”。
我也收到了警告:
'ds.child("Price).getValue(Integer.class) 的拆箱可能会产生 java.lang.NullPointerException。
我是使用整数的新手,所以请帮助我对我的代码进行必要的编辑:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
mda = FirebaseDatabase.getInstance().getReference().child("Cart");
ValueEventListener eventListener = mda.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
int sum = 0;
for (DataSnapshot ds : dataSnapshot.getChildren()) {
int pvalue = ds.child("Price").getValue(Integer.class);
sum += pvalue;
if (sum < 100) {
Toast.makeText(getApplicationContext(), "success", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "sorry", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage());
}
});
下图是我的数据库的视图。我正在尝试获取价格下数字的总值,例如 99+66
一旦从数据库中的子项(价格)计算出总数,如果总数小于 100,我应该会收到一条 toast 消息说成功。
【问题讨论】:
-
请更新您的问题以包含您附加监听器的代码。现在我们必须知道
dataSnapshot包含什么。 -
我已经更新了
标签: android firebase-realtime-database integer