Я пытаюсь получить сумму значений из моего "ценового" узла в базе данных Firebase - PullRequest
0 голосов
/ 06 июля 2019

Приложение собирается без ошибок, но при запуске выдает следующую ошибку в logcat:

java.lang.NullPointerException: попытка вызвать виртуальный метод int java.lang.Integer.intValue () для пустой ссылки на объект в com.bwae.kuja.Main2Activity.onDataChange.

Я также получил предупреждение:

распаковка '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 голосов
/ 06 июля 2019

На скриншоте ваших данных кажется, что после Price у вас есть пробел, поэтому "Price ". Вот как имена свойств Price и Price отображаются в консоли Firebase:

enter image description here

Вы можете исправить эту ошибку в своих данных или обновить код, чтобы прочитать значение из правильного свойства:

int pvalue = ds.child("Price ").getValue(Integer.class);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...