Referencia MapView en SupportMapFragment
Tengo un fragmento que extiende SupportMapFragment.
public class PlaceMapsFragment extends SupportMapFragment { private GoogleMap mMap; private LatLng mPosFija; public PlaceMapsFragment() { super(); } public static PlaceMapsFragment newInstance(LatLng posicion) { PlaceMapsFragment frag = new PlaceMapsFragment(); frag.mPosFija = posicion; return frag; } @Override public GoogleMap getMap() { // TODO Auto-generated method stub return super.getMap(); } @Override public void onCreate(Bundle arg0) { // TODO Auto-generated method stub super.onCreate(arg0); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = super.onCreateView(inflater, container, savedInstanceState); //initMap(); return view; } private void initMap() { UiSettings settings = getMap().getUiSettings(); settings.setAllGesturesEnabled(false); settings.setMyLocationButtonEnabled(false); getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(mPosFija, 16)); getMap().addMarker( new MarkerOptions().position(mPosFija) .icon(BitmapDescriptorFactory .fromResource(R.drawable.marker))); } }
Ahora quiero refernce el MapView que se genera automáticamente de modo que pueda agregar mi funcionalidad al mapa.
- Android SupportMapFragment Exception Error
- No se puede ver los detalles de StrictMode en logcat - Se ha suprimido la violación de la política de StrictMode en la rotación de la pantalla
- Google map dentro de otro fragmento - Error al llamar a getMapAsync
- Cómo utilizar SupportMapFragment dentro de un fragmento?
- Google Maps Android API v2 SoporteMapFragmento de pérdida de memoria
Cuando intento initMap();
NullPointerException
Error:
12-10 02:54:20.171: E/AndroidRuntime(4339): FATAL EXCEPTION: main 12-10 02:54:20.171: E/AndroidRuntime(4339): java.lang.NullPointerException 12-10 02:54:20.171: E/AndroidRuntime(4339): at maps.ar.ba(Unknown Source) 12-10 02:54:20.171: E/AndroidRuntime(4339): at maps.yha(Unknown Source) 12-10 02:54:20.171: E/AndroidRuntime(4339): at maps.y.au.a(Unknown Source) 12-10 02:54:20.171: E/AndroidRuntime(4339): at maps.y.ae.moveCamera(Unknown Source) 12-10 02:54:20.171: E/AndroidRuntime(4339): at com.google.android.gms.maps.internal.IGoogleMapDelegate$Stub.onTransact(IGoogleMapDelegate.java:83) 12-10 02:54:20.171: E/AndroidRuntime(4339): at android.os.Binder.transact(Binder.java:297) 12-10 02:54:20.171: E/AndroidRuntime(4339): at com.google.android.gms.maps.internal.IGoogleMapDelegate$a$a.moveCamera(Unknown Source) 12-10 02:54:20.171: E/AndroidRuntime(4339): at com.google.android.gms.maps.GoogleMap.moveCamera(Unknown Source) 12-10 02:54:20.171: E/AndroidRuntime(4339): at com.m7.nomad.PlaceMapsFragment.initMap(PlaceMapsFragment.java:55) 12-10 02:54:20.171: E/AndroidRuntime(4339): at com.m7.nomad.PlaceMapsFragment.onCreateView(PlaceMapsFragment.java:46) 12-10 02:54:20.171: E/AndroidRuntime(4339): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460) 12-10 02:54:20.171: E/AndroidRuntime(4339): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911) 12-10 02:54:20.171: E/AndroidRuntime(4339): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) 12-10 02:54:20.171: E/AndroidRuntime(4339): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 12-10 02:54:20.171: E/AndroidRuntime(4339): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444) 12-10 02:54:20.171: E/AndroidRuntime(4339): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461) 12-10 02:54:20.171: E/AndroidRuntime(4339): at com.m7.nomad.PlaceActivity$TabManager.onTabChanged(PlaceActivity.java:153) 12-10 02:54:20.171: E/AndroidRuntime(4339): at android.widget.TabHost.invokeOnTabChangeListener(TabHost.java:379) 12-10 02:54:20.171: E/AndroidRuntime(4339): at android.widget.TabHost.setCurrentTab(TabHost.java:364) 12-10 02:54:20.171: E/AndroidRuntime(4339): at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:150) 12-10 02:54:20.171: E/AndroidRuntime(4339): at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:540) 12-10 02:54:20.171: E/AndroidRuntime(4339): at android.view.View.performClick(View.java:3591) 12-10 02:54:20.171: E/AndroidRuntime(4339): at android.view.View$PerformClick.run(View.java:14263) 12-10 02:54:20.171: E/AndroidRuntime(4339): at android.os.Handler.handleCallback(Handler.java:605) 12-10 02:54:20.171: E/AndroidRuntime(4339): at android.os.Handler.dispatchMessage(Handler.java:92) 12-10 02:54:20.171: E/AndroidRuntime(4339): at android.os.Looper.loop(Looper.java:137) 12-10 02:54:20.171: E/AndroidRuntime(4339): at android.app.ActivityThread.main(ActivityThread.java:4507) 12-10 02:54:20.171: E/AndroidRuntime(4339): at java.lang.reflect.Method.invokeNative(Native Method) 12-10 02:54:20.171: E/AndroidRuntime(4339): at java.lang.reflect.Method.invoke(Method.java:511) 12-10 02:54:20.171: E/AndroidRuntime(4339): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 12-10 02:54:20.171: E/AndroidRuntime(4339): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 12-10 02:54:20.171: E/AndroidRuntime(4339): at dalvik.system.NativeStart.main(Native Method)
- SupportMapFragment.getmap () devuelve null
- Cambiar de fragmento con fragmento de mapa deja una pantalla negra
- El método getSupportFragmentManager () no está definido para el tipo MapFragment
- Mostrar MapFragment en un DialogFragment
- SupportMapFragment carga extremadamente lento la primera vez, pero rápidamente en las cargas siguientes (incluyendo diferentes actividades)
- ClassNotFoundException leyendo un objeto Serializable en una clase que extiende MapFragment en onSaveInstanceState
- SupportMapFragment y onMapReady
- Google map se estrella en pocos dispositivos
Este es un comportamiento esperado.
Puede llamar a getMap()
sólo después de que el Fragmento haya pasado por onCreateView()
, de lo contrario le dará un null
. También puede recibir un null
si los servicios de Google Play no están disponibles.
En otras palabras, llame a initMap()
en onResume()
.
Puedes consultar más aquí .
¡Espero eso ayude!
Finalmente lo resolví, no tienes que sobrescribir getMap()
y no necesitas la variable mMap, el GoogleMap está incluido en la clase. Finalmente necesitas llamar a initMap () en onResume:
public class PlaceMapsFragment extends SupportMapFragment { private LatLng mPosFija = new LatLng(37.878901,-4.779396); public PlaceMapsFragment() { super(); } public static PlaceMapsFragment newInstance(LatLng posicion) { PlaceMapsFragment frag = new PlaceMapsFragment(); frag.mPosFija = posicion; return frag; } @Override public void onResume() { // TODO Auto-generated method stub super.onResume(); initMap(); } @Override public void onCreate(Bundle arg0) { // TODO Auto-generated method stub super.onCreate(arg0); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = super.onCreateView(inflater, container, savedInstanceState); //initMap(); return view; } private void initMap() { UiSettings settings = getMap().getUiSettings(); settings.setAllGesturesEnabled(false); settings.setMyLocationButtonEnabled(false); getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(mPosFija, 16)); getMap().addMarker( new MarkerOptions().position(mPosFija) .icon(BitmapDescriptorFactory .fromResource(R.drawable.marker))); } }
Espero que ayude a otras personas que están empezando con la v2 de google maps api (como yo: D).
El problema está en el onCreateView. Has olvidado llamar a super.onCreateView (). Compruebe esto
- Orden de inserción de SQLite vs orden de consulta?
- ¿Cómo obtener los detalles del dispositivo cliente que está conectado a hotspot wifi?