PDA

Ver la Versión Completa : [ CONSULTA ] Mapas en Android


antmon12
02/07/13, 01:57:59
Buenas compañeros programadores de Android!!
Planteo aquí mi duda pues estoy harto de darle vueltas y no encuentro la solución.
Tengo una actividad principal con Navigation Drawer donde cada vez que elijo una opción de la lista cargo una nueva actividad que extienda de Fragment. El problema viene cuando para usar los mapas debo extender de FragmentActivity por lo que no se como llamarlo desde la actividad anterior.
Cuando selecciono un elemento del panel lateral hago lo siguiente:

private Fragment mContent;
mContent = new Fragment_datos();
getFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, mContent).commit();

No se si me he explicado del todo bien pero espero me podaís ayudar.
Un saludo!

kriogeN
02/07/13, 08:45:38
O no entiendes el funcionamiento de los Fragment o no te has explicado bien.

Una nueva Activity no puede heredar de un Fragment. Y por lo que veo lo que haces es reemplazar el Fragment dentro de la MISMA Activity. Pues con un Fragment que contiene un mapa es exactamente igual, y más ahora con API V2, que ni siquiera tienen que ser MapActivity o MapFragment.

Eso si, tendrás que reemplazar los métodos onStart, onStop, onResume y onPause. Todo muy bien explicado en la documentación oficial de Google sobre Maps V2.

antmon12
02/07/13, 11:31:42
Pongo código y así despejamos dudas:

<!-- Layout principal -->
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<ListView
android:id="@+id/left_drawer"
android:layout_width="300dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#585858"
android:choiceMode="singleChoice" />
</android.support.v4.widget.DrawerLayout>

//Actividad principal
public class MainActivity extends Activity implements OnItemClickListener {

// Variables miembro.
private Fragment mContent;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (mContent == null)
mContent = new Fragment_localizacion();

getFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, mContent).commit();
......

//Fragment del mapa
public class Fragment_localizacion extends FragmentActivity {

private GoogleMap mapa;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mi_localizacion);
mapa = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id. map)).getMap();
mapa.setMapType(GoogleMap.MAP_TYPE_NORMAL);
mapa.setMyLocationEnabled(true);
mapa.getUiSettings().setZoomControlsEnabled(false) ;
mapa.getUiSettings().setCompassEnabled(true);
mapa.getMyLocation();
}

kriogeN
02/07/13, 13:06:42
Lo dicho, no entiendes como funcionan los Fragment.

Estás tratando de meter un FragmentActivity en un Fragment, cosa que no tiene nada que ver el uno con el otro.

Los Activity a partir de API v11 incluyen el getFragmentManager() para dar soporte a introducir Fragments. Para usar Fragments en versiones anteriores de Android el paquete de soporte incluye la clase FragmentActivity, que tiene el método getSupportFragmentManager(), equivalente al getFragmentManager() del Activity a partir de API v11.

En resumen, una Activity V11 = FragmentActivity V8. Y ninguno de los 2 son Fragment, un Fragment es otra cosa.

antmon12
02/07/13, 16:26:54
Con este código puedes mostrar sobre el frame de la actividad principal otra clase que extienda de fragmen no?

if (mContent == null)
mContent = new Fragment_localizacion();

getFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, mContent).commit();

kriogeN
02/07/13, 18:37:59
Si, para eso sirve.