我正在尝试从我的Firebase数据库中的“价格”节点获取值的总和

时间:2019-07-06 10:44:46

标签: android firebase-realtime-database integer

该应用程序正在构建,没有错误,但是在运行时在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

THE picture below is a view of my database. I am trying to get the total values of the figures under price, for example 99+66

如果总数是根据数据库中的子项(价格)计算得出的,如果总数小于100,我应该收到一条祝酒消息,说成功。

1 个答案:

答案 0 :(得分:0)

从数据的屏幕快照中,您似乎在Loading dependency graph之后有一个空格字符,因此Price。以下是属性名称"Price "Price在Firebase控制台中的显示方式:

enter image description here

您可以修复数据中的此错误,也可以更新代码以从正确的属性中读取值:

Price