MapFragment загружается, но не доступен - PullRequest
1 голос
/ 14 октября 2019

У меня есть фрагмент, в который я хочу загрузить карту Google. Я добавил FragmentMap, и это прекрасно загружается. Проблема, с которой я столкнулся, заключается в том, что всякий раз, когда я пытаюсь сослаться на карту, она появляется как ошибка указателя NULL.

Мой макет XML:

<fragment
    android:id="@+id/map2"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/imageView2"
    app:layout_constraintVertical_bias="1.0"
     />

И код, который я использовал в моемФрагмент:

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    SupportMapFragment mapFragment = (SupportMapFragment)getFragmentManager().findFragmentById(R.id.map2);
    mapFragment.getMapAsync(this);
}


public void onMapReady(GoogleMap googleMap) {
    map = googleMap;
    LatLng pp = new LatLng(52.81,1.05);
    MarkerOptions option = new MarkerOptions();
    option.position(pp).title("Home");
    map.addMarker(option);
    map.moveCamera(CameraUpdateFactory.newLatLng(pp));
}
}

Сгенерированная ошибка: mapFragment.getMapAsync(this);

java.lang.NullPointerException: Попытка вызвать виртуальный метод void com.google.android.gms. maps.SupportMapFragment.getMapAsync (com.google.android.gms.maps.OnMapReadyCallback) 'для пустой ссылки на объект.

Мой вопрос, я подозреваю, что, возможно, ссылаюсь на карту в неправильном месте. Должен ли мой код находиться в родительском действии (например, ActivityMain) или во фрагменте, который содержит карту?

...