GetMap () de SupportMapFragment devuelve null

Estoy intentando crear un SupportMapFragment dinámicamente y ponerlo en un contenedor de FrameLayout .

Mi problema es que mMapFragment.getMap() devuelve null

¿Alguien puede ayudar?

CenterMapFragment.java

 public class CenterMapFragment extends Fragment { private SupportMapFragment mMapFragment; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.center_map_fragment, container, false); } @Override public void onActivityCreated (Bundle savedInstanceState){ super.onActivityCreated(savedInstanceState); if (GooglePlayServicesUtil.isGooglePlayServicesAvailable(getActivity()) == ConnectionResult.SUCCESS) { setUpMapIfNeeded(); } } private void setUpMapIfNeeded() { if (mMapFragment == null) { mMapFragment = SupportMapFragment.newInstance(); FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.map, mMapFragment); fragmentTransaction.commit(); setUpMap(); } } private void setUpMap() { GoogleMap map = mMapFragment.getMap(); // map is null! } @Override public void onResume() { super.onResume(); setUpMapIfNeeded(); } } 

Center_map_fragment.xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <FrameLayout android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> <Button android:id="@+id/btn_loc" android:layout_width="60dp" android:layout_height="50dp" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:background="@drawable/locbtn" /> </RelativeLayout> 

commit() en un FragmentTransaction no realiza sus operaciones inmediatamente. En el momento en que usted llame a setUpMap() , onCreateView() no habrá sido llamado en el SupportMapFragment , y por lo tanto no habrá aún un mapa.

Un enfoque es no utilizar fragmentos anidados, eligiendo en su lugar tener CenterMapFragment extender SupportMapFragment , en cuyo caso getMap() debería funcionar en cualquier momento después de onCreateView() (por ejemplo, onActivityCreated() ).

En el siguiente enlace MapView se utiliza como CommonsWare sugiere en la última parte de su comentario:

http://ucla.jamesyxu.com/?p=287

 public class MapFragment extends Fragment { MapView m; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // inflat and return the layout View v = inflater.inflate(R.layout.map_fragment, container, false); m = (MapView) v.findViewById(R.id.mapView); m.onCreate(savedInstanceState); return v; } @Override public void onResume() { super.onResume(); m.onResume(); } @Override public void onPause() { super.onPause(); m.onPause(); } @Override public void onDestroy() { super.onDestroy(); m.onDestroy(); } @Override public void onLowMemory() { super.onLowMemory(); m.onLowMemory(); } } 

Espero que estos sean útiles.

Vocación

 fragmentTransaction.commit(); 

Es asíncrono, el mapa no estará listo todavía cuando regrese de él. Simplemente llame

 getFragmentManager().executePendingTransactions(); 

Como la siguiente línea, que la hará síncrona y la ejecutará para la siguiente instrucción para recoger el mapa acabado. Si le preocupa el tiempo que tarda, ponga toda la inicialización en AsyncTask y muestre un indicador de progreso al usuario mientras el mapa se está inicializando.

  • Androide, google, mapa, marcador, colocación
  • Mapview muestra en blanco pero el fragmento está bien
  • ¿Cómo detectar constantemente las ubicaciones de los marcadores cercanos desde la ubicación actual en Google Maps android?
  • Android GoogleMap o SupportMapFragment - excepción de puntero nulo
  • Cómo adjuntar un marcador flexible en el mapa algo así como Uber y Lyft?
  • Barra de herramientas no aparece en fragmento con google maps
  • Android Make Disappear o eliminar el punto azul en el mapa v2
  • ¿Cómo mover los derechos de autor a la parte superior de los mapas v2 para android?
  • Android Google Map error android.view.InflateException: Archivo XML binario línea # 6: error iniciando el fragmento de clase
  • Cambiar el tamaño de un mapa en tiempo de ejecución
  • SecurityException al llamar a getLastKnownLocation
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.