Приложение собирается без ошибок, но при запуске выдает следующую ошибку в 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
После того, как итоговая сумма будет рассчитана по дочернему значению (цене) в базе данных, если итоговое значение меньше 100, я должен получить сообщение с тостом об успехе.