GetSupportFragmentManager (). FindFragmentById (R.id.map) comenzó a devolver null

Tengo un fragmento de mapa dentro de otro fragmento. Esto funcionaba antes, pero creo que estropeó después de actualizar google play servicios de la biblioteca. ¿Qué está mal? Fragment_map.xml:

<fragment android:name="com.google.android.gms.maps.SupportMapFragment" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" /> 

MapFragment:

 GoogleMap map; private static View view; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (view != null) { ViewGroup parent = (ViewGroup) view.getParent(); if (parent != null) parent.removeView(view); } try { view = inflater.inflate(R.layout.fragment_map, container, false); map = ((SupportMapFragment) getActivity() .getSupportFragmentManager() .findFragmentById(R.id.map)) .getMap(); // NullPointerException at this line map.getUiSettings().setAllGesturesEnabled(true); map.getUiSettings().setMyLocationButtonEnabled(false); map.getUiSettings().setZoomControlsEnabled(true); } catch (InflateException e) { /* map is already there, just return view as it is */ } return view; } 

Tuve que cambiar

 getActivity().getSupportFragmentManager() 

a

 getChildFragmentManager() 

Para que funcione. No sé por qué funcionaba perfectamente hace unos días.

Esta es la respuesta:

Nota: No se puede inflar un diseño en un fragmento cuando ese diseño incluye un fragmento. Los fragmentos anidados sólo se admiten cuando se añaden dinámicamente a un fragmento.

En onCreateView, no deberías estar haciendo esto. Utilice el método sugerido en la documentación oficial para la comunicación entre fragmentos. Aquí, creo que su problema está relacionado con el tiempo. No todos los fragmentos se crean o se gestionan de forma sincrónica. Además, no estoy muy seguro si puedes llamar a getActivity () de onCreateView () – porque los fragmentos recibirán onActivityCreated () callback sólo después de onCreateView ().

  • ¿Es posible abrir Google Maps con una intención que tiene múltiples clavijas
  • Cierre de una actividad de otra clase
  • El marcador del mapa de Google se reemplaza por el rectángulo delimitador en el zoom
  • Manejo de eventos táctiles en SurfaceView sobre Maps API v2
  • Cambiar el icono del marcador durante el tiempo de ejecución
  • Google Maps API V2 'Error al cargar mapa. No se pudo contactar con Google Servers, ni siquiera comprobar permiso y keystore
  • Cómo mantener sin problemas el marcador de ubicación actual en Google Maps v2 android
  • Extraño error "java.io.IOException: EOF" en Android
  • Android: para dibujar una ruta entre dos puntos geográficos
  • Cómo comprobar si el usuario está dentro de un círculo Google Maps v2
  • DeslizamientoDirector sobre GoogleMap
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.