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 primeroView 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.