![]() |
|
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
||||
|
||||
Mapas en Android
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! |
|
#2
|
||||
|
||||
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. |
#3
|
||||
|
||||
Pongo código y así despejamos dudas:
Código:
<!-- 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> Código:
//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(); ...... Código:
//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(); } Última edición por antmon12 Día 02/07/13 a las 11:35:54 |
#4
|
||||
|
||||
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. |
#5
|
||||
|
||||
Con este código puedes mostrar sobre el frame de la actividad principal otra clase que extienda de fragmen no?
Código:
if (mContent == null) mContent = new Fragment_localizacion(); getFragmentManager() .beginTransaction() .replace(R.id.content_frame, mContent).commit(); |
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 09:37:56 (GMT +2)
HTCMania: líderes desde el 2007