Saltar al contenido

mapFragment.getMapAsync (esto) – NullPointerException

Si hallas alguna incompatibilidad con tu código o trabajo, recuerda probar siempre en un ambiente de testing antes subir el código al trabajo final.

Solución:

Mi comentario en mapas con fragmento, primero debes refrenezar tu vista ya que llamarás algo de ella, es por eso que inflo mi vista primero
View view = inflater.inflate(R.layout.activity_maps, null, false);

Administrador de fragmentos secundarios de segunda llamada this.getChildFragmentManager() en lugar de getActivity().getSupportFragmentManager()

Aquí está el ejemplo completo para ver el mapa.

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class ClinicFragment extends Fragment implements OnMapReadyCallback 

    private GoogleMap mMap;

    public static ClinicFragment newInstance() 
        ClinicFragment fragment = new ClinicFragment();
        return fragment;
    

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
        View view = inflater.inflate(R.layout.activity_maps, null, false);

        SupportMapFragment mapFragment = (SupportMapFragment) this.getChildFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

        return view;
    


    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) 
        mMap = googleMap;

        // Add a marker in Sydney and move the camera
        LatLng sydney = new LatLng(-34, 151);
        mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
    

permiso requerido










más elemento de característica


la mayoría de las importaciones mapas de Google key


Actualizar agregue estos metadatos si se enfrenta a un error al inflar el fragmento de clase


veraniego para mainfest



// permission here

 

    // feature element 
    // maps key

  


activity_maps.xml


usar getChildFragmentManager() en lugar de getActivity().getSupportFragmentManager() en el fragmento.

igual que:

SupportMapFragment mapFragment = (SupportMapFragment)getChildFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this); 

Está intentando encontrar un fragmento antes de que exista. Indicas que la maquetación que tiene el fragmento es fragment_example_map.xml. Sin embargo, está intentando encontrar el fragmento de mapa antes de inflar ese archivo de diseño. Esto no funcionará.

Más allá de eso, parece que intentas acceder al fragmento del mapa desde el interior de otro fragmento, en el fragmento de ese fragmento. onCreateView() método. No sé por qué está anidando fragmentos aquí, ya que parece que hará que su código sea más complejo y más frágil sin ningún beneficio obvio.

¡Haz clic para puntuar esta entrada!
(Votos: 3 Promedio: 5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *