Вы получаете бесконечный цикл, потому что каждый раз, когда происходит ошибка, запускается метод addOnFailureListener()
, который в терминах вызывает метод fetchdata()
. Эта техника называется recursion
, но в вашем случае она вам совсем не помогает. Чтобы решить эту проблему, вместо вызова fetchdata()
метода, просто обработайте Exception
и используйте следующий код:
private void fetchdata() {
db.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
List<String> cities = (ArrayList) documentSnapshot.get("cities");
Intent intent = new Intent(Splash.this, Select.class);
intent.putStringArrayListExtra("cities", cities);
startActivity(intent);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
e.printStackTrace(); //Handle Exception
}
});
}