Cambio del fragmento de mapa a otro Fragmento y reverso

Tengo una actividad de fragmento que conmuta fragmentos al hacer clic en el botón.
Los dos fragmentos que cambio son:

  1. Google map android v2 fragment
  2. Otro fragmento con una vista de texto

Así es como cambio los fragmentos:

public void onClick(View v) { FragmentManager fm = getSupportFragmentManager(); if(tv.getText().toString().equalsIgnoreCase("Click ME!!")){ tv.setText("MAP"); if (fm != null) { if(map == null){ map = new Map(); } FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.lay_contaier, map); ft.commit(); } } else{ tv.setText("Click ME!!"); if (fm != null ){ FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.lay_contaier,new empty()); ft.commit(); } } } 

Este es mi código de Google Maps Fagment

  public class Map extends Fragment implements OnMarkerClickListener, OnInfoWindowClickListener, OnMarkerDragListener { private static final LatLng PERTH = new LatLng(-31.952854, 115.857342); private static final LatLng SYDNEY = new LatLng(-33.87365, 151.20689); private GoogleMap mMap; private Marker mPerth; private Marker mSydney; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.activity_main,null); return view; } 

Activity_mail.xml

 <?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="fill_parent" android:layout_height="fill_parent" class="com.google.android.gms.maps.SupportMapFragment"/> 

Pero cada vez que vuelvo al fragmento de mapa, la aplicación se bloquea. ¿Cómo debo hacer este código correcto?

2 Solutions collect form web for “Cambio del fragmento de mapa a otro Fragmento y reverso”

Sospecho que esto le está sucediendo porque tiene su fragmento de mapa definido en su archivo de diseño XML. Para intercambiar fragmentos de esta manera, necesitará instanciar su mapa en código, algo como lo siguiente:

 private void initializeMap() { mMapFragment = SupportMapFragment.newInstance(); FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.add(R.id.fragment_container, mMapFragment, "map"); fragmentTransaction.commit(); handler.post(new Runnable() { @Override public void run() { mMap = mMapFragment.getMap(); mMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() { @Override public void onCameraChange(CameraPosition cameraPosition) { // Do something here } }); } }); } 

Me pareció que mMapFragment.getMap() estaba devolviendo null, por lo que tendrá que programar el resto de la configuración a través de una instancia de Handler . Mi XML de diseño se ve así:

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".LauncherActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/fragment_container"> <!-- The fragments will go here --> </RelativeLayout> <RelativeLayout android:layout_gravity="start" android:layout_height="match_parent" android:layout_width="wrap_content" android:background="@color/drawer_background"> ... </RelativeLayout> </android.support.v4.widget.DrawerLayout> 

Espero que esto ayude.

Está haciendo FragmentManager Null. Quitar fm=null . También en el bucle else está reemplazando dos fragmentos. No haga doble reemplazo a la vez. Antes de llamar a commit (), solo hace un reemplazo

  • Extracción de datos del archivo CSV (tabla de fusión y solución alternativa de kml)
  • API de Street View de Android tema animateTo
  • Los eventos de zoom que funcionan en un androide Mapview
  • Android - Cómo determinar si las coordenadas se encuentran en la carretera en Google Maps
  • Cómo cambiar la Barra de Acción al tocar el mapa como Uber
  • ¿Cómo obtener la lista de coordenadas de las rutas de la calle con la API de Google Maps para Android?
  • Liberar la aplicación de Android firmada, Google Plus Login y Google Map no funcionan
  • Java.lang.OutOfMemoryError: android.support.v4.app.BackStackState de longitud 1279544898 se desbordaría
  • Mantenga el mapa centrado, independientemente de dónde pinche el zoom en android
  • Desactivar captura de pantalla en mi aplicación Android
  • Alineación del texto en el fragmento de marcador de Google Maps
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.