SupportMapFragment en DialogFragment
Necesito incorporar un SupportMapFragment
en un Dialog
. Esto es lo mejor que pude pensar:
public class SupportMapFragmentDialog extends DialogFragment { private final SupportMapFragment fragment; public SupportMapFragmentDialog() { fragment = new SupportMapFragment(); setTargetFragment(fragment, 1); } @Override public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) { return fragment.onCreateView(inflater, container, savedInstanceState); } public SupportMapFragment getFragment() { return fragment; } }
Sin embargo, cuando llamo a esto:
- Cambiar de fragmento con fragmento de mapa deja una pantalla negra
- Google map dentro de otro fragmento - Error al llamar a getMapAsync
- Android GoogleMap o SupportMapFragment - excepción de puntero nulo
- El método getSupportFragmentManager () no está definido para el tipo MapFragment
- Google Map v2 dentro del fragmento android
final SupportMapFragmentDialog dialog = new SupportMapFragmentDialog(); dialog.show(getSupportFragmentManager(), "Historico");
Entiendo esto:
¿Qué puedo hacer para ver el mapa en el cuadro de diálogo?
La aplicación tiene otro SupportMapFragment
que está funcionando maravillas, por lo que no tiene nada que ver con la configuración.
- SupportMapFragment y onMapReady
- No se puede cambiar el identificador de contenedor del fragmento SupportMapFragment
- Android SupportMapFragment Exception Error
- ClassNotFoundException leyendo un objeto Serializable en una clase que extiende MapFragment en onSaveInstanceState
- Android no puede encontrar el método de símbolo getMap ()
- Android Maps V2 pérdida de memoria LocationClientHelper
- Google map se estrella en pocos dispositivos
- Android - SupportMapFragment con GoogleMaps API 2.0 dando IllegalArgumentException
Puede mostrar un fragmento de mapa en un
public class DialogMapFragment extends DialogFragment { private SupportMapFragment fragment; public DialogMapFragment() { fragment = new SupportMapFragment(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.mapdialog, container, false); getDialog().setTitle(""); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); transaction.add(R.id.mapView, fragment).commit(); return view; } public SupportMapFragment getFragment() { return fragment; } }
R.layout.mapdialog:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="0dp" > <FrameLayout android:id="@+id/mapView" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> </RelativeLayout>
Al final terminé usando MapView
en un MapView
de Dialog
normal en lugar de SupportMapFragment
Este es mi código:
final Historico h = adapter.getItem(arg2 - 1); if (mv.getParent() != null) { ((ViewGroup) mv.getParent()).removeView(mv); } final Dialog d = new Dialog(HistorialScreen.this); d.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); d.requestWindowFeature(Window.FEATURE_NO_TITLE); d.setContentView(mv); mv.getMap().clear(); mv.getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(h.getPosicion(), 17)); final MarkerOptions options = new MarkerOptions(); options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)); options.position(h.getPosicion()); mv.getMap().addMarker(options); d.show();
Y funciona como se pretende.