Нулевая ссылка на объект при получении GeoPoint из Cloud Firestore - PullRequest
0 голосов
/ 26 ноября 2018

В моем MapsActivity я пытаюсь добавить один маркер для каждой записи в моей коллекции Cloud Firestore " Stores ".

Когда я запускаю код, я получаю этоFATAL EXCEPTION:

Попытка вызвать виртуальный метод 'double com.google.firebase.firestore.GeoPoint.getLatitude ()' для ссылки на пустой объект

Я не знаюНе знаю, почему я получаю null object reference.Путь правильный (с тем же путем я извлекаю другие данные).Название поля правильное (я пробовал со многими именами: " position ", " prova ", " aaaaa ", ecc).Поле установлено правильно.

Я также попробовал getLatitude

Вот подробности моего кода.

MapsActivity.java

FirebaseFirestore.getInstance().collection("Stores")
                .get()
                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        if (task.isSuccessful()) {
                            for (QueryDocumentSnapshot document : task.getResult()) {
                                Store store = document.toObject(Store.class); 
                                GeoPoint gp = store.getPosition();
                                LatLng location = new LatLng(gp.getLatitude(), gp.getLongitude());

                                MarkerOptions options = new MarkerOptions()
                                        .position(location)
                                        .title(store.getName());

                                mMap.addMarker(options);
                            }
                        }
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Log.d("Error Listener",e.toString());
                    }
                });

Store.java

public class Store extends SugarRecord
{
    @Unique
    private String storeId;
    private GeoPoint position;

    public Store()
    {
        super();
    }


    public GeoPoint getPosition()
    {
        return position;
    }

    @Override
    public String toString()
    {
        return "Stores{" +
                "storeId='" + storeId + '\'' +
                ", position='" + position + '\'' +
                '}';
    }
}

Cloud Firestore

enter image description here

...