@DAWSON1
человек

Ошибка при работе с массивами в Cloud Firestore?

Всем привет! Столкнулся с бедой, суть в том, что написал код чтобы получить значение из массива из бд и после удалял это значение из базы, все нормально работает до момента пока база не опустеет, после этого он вылетает с ошибкой указывая на строчку которая берет первое значение из массива, то есть как я понял приложение полностью игнорирует переменную if (promocodes != null) и воспринимает "[]" как ненулевое значение, как исправить чтобы при пустом поле массива она не выполняла команды идущие в if (promocodes != null)?

сам код приложения:

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

    Button mButtonGive;
    Button mButtonGiveIvi;
    TextView mTextPromo;
    TextView mTextPromoIvi;

    FirebaseFirestore mRef = FirebaseFirestore.getInstance();
    DocumentReference mDelRef = mRef.collection("Promocode").document("Delivery");
    DocumentReference mIviRef = mRef.collection("Promocode").document("Ivi");


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mButtonGive = findViewById(R.id.mButtonGive);
        mButtonGiveIvi = findViewById(R.id.mButtonGiveIvi);
        mTextPromo = findViewById(R.id.mTextPromo);
        mTextPromoIvi = findViewById(R.id.mTextPromoIvi);

        mButtonGive.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mDelRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                            if (task.isSuccessful()) {
                                DocumentSnapshot document = task.getResult();
                                assert document != null;
                                if (document.exists()) {
                                    Log.d(TAG, "DocumentSnapshot data: " + document.getData());
                                    List<String> promocodes;
                                    promocodes = (List<String>) document.get("Promocode");
                                    Log.d(TAG, "Promocodes: " + promocodes);
                                    if (promocodes != null) {
                                        mTextPromo.setText(promocodes.get(0));
                                        mDelRef.update("Promocode", FieldValue.arrayRemove(promocodes.get(0)));
                                    } else {
                                        mTextPromo.setText("No Promo");
                                        Log.d(TAG, "No Promo");
                                    }
                                } else {
                                    Log.d(TAG, "No such document");
                                }

                            }
                            else {
                                Log.d(TAG, "get failed with ", task.getException());
                            }
                    }

                });
            }
        });
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Это же джава, а не джаваскрипт, привыкай. Пустой список (не массив! Это разные вещи!) НЕ равен null. Проверяй на isEmpty().
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы