MapFragment en las pestañas de barra de acción

Estoy intentando crear una aplicación que implementará las pestañas de la barra de acción. Una de las pestañas debe contener un MapFragment.

¿Cómo puedo implementar una barra de acción con pestañas, bajo una de las cuales es un mapa Fragmento?

¿Puede usted ayudarme con cómo proceder con esto?

Esto es lo que tengo hasta ahora:

clase principal

package com.nfc.demo; import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.Activity; import android.app.Fragment; import android.app.FragmentTransaction; import android.os.Bundle; public class NFCDemoActivity extends Activity { Tab selectedTab = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActionBar bar = getActionBar(); bar.setDisplayShowHomeEnabled(false); bar.setDisplayShowTitleEnabled(false); bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); bar.setCustomView(R.layout.main); ActionBar.Tab mapTab = bar.newTab().setText("Map"); ActionBar.Tab settingsTab = bar.newTab().setText("Settings"); ActionBar.Tab aboutTab = bar.newTab().setText("About"); MapFragment mapFragment = new MapFragment(); SettingsFragment settingsFragment = new SettingsFragment(); AboutFragment aboutFragment = new AboutFragment(); mapTab.setTabListener(new TabListener(mapFragment)); settingsTab.setTabListener(new TabListener(settingsFragment)); aboutTab.setTabListener(new TabListener(aboutFragment)); Tab selectedTab = (Tab) getLastNonConfigurationInstance(); if (selectedTab == null) { bar.addTab(mapTab, false); bar.addTab(settingsTab, false); bar.addTab(aboutTab, true); } setContentView(R.layout.main); } public Object onRetainNonConfigurationInstance() { return selectedTab; } protected boolean isRouteDisplayed() { return false; } protected class TabListener implements ActionBar.TabListener { private Fragment fragment; public TabListener(Fragment fragment) { this.fragment = fragment; } public void onTabSelected(Tab tab, FragmentTransaction fragmentTransaction) { fragmentTransaction.replace(R.id.mainFragment, this.fragment, null); selectedTab = tab; } public void onTabUnselected(Tab tab, FragmentTransaction fragmentTransaction) { fragmentTransaction.remove(this.fragment); } public void onTabReselected(Tab tab, FragmentTransaction fragmentTransaction) { //do nothing } } } 

Las clases de Fragment son simplemente devolver un inflado con un diseño .xml.

Diseño XML:

Main.xml (el mapa debe estar en este archivo XML)

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/mainFragment" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > </LinearLayout> 

Settings.xml Y about.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <TextView android:id="@+id/textView123" android:text="asdfg" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 

He estado tratando de averiguar cómo proceder durante un par de días, pero estoy realmente confundido. Cualquier ayuda / consejos sería muy apreciada.

Además, ¿qué pasa con getLastNonConfigurationInstance() ? Está obsoleto.

En la siguiente solución, es posible agregar un GoogleMap a una pestaña de la barra de acción / desplegable. La clave para hacerlo consiste en configurar correctamente el fragmento para destruir el MapFragment al cambiar a otro fragmento en la barra de acciones.

Cree una actividad que implemente la funcionalidad de la barra de acciones:

  1. Cree un proyecto en Eclipse que utilice Tabulaciones para la actividad principal. Si no lo hace, proceda a los pasos 2-5.
  2. Cree una clase que extienda Activity e implemente ActionBar.OnNavigationListener .
  3. Cree un archivo XML de presentación que sea un contenedor para los fragmentos de pestaña cuando cambie entre ellos.
  4. Implementar / anular el siguiente método en su clase de actividad: public boolean onNavigationItemSelected(int position, long id) .
  5. En este método, cambie entre el objeto de position para determinar la pestaña seleccionada y establezca el fragmento en una nueva instancia usando el FragmentManager como este: getFragmentManager().beginTransaction().replace(R.id.container, fragment).commit() .

Crear un fragmento que contiene el mapa:

  1. Cree una clase que extienda Fragment para utilizarla como fragmento de su ficha. Lea [ 1 ] para entender mejor el MapFragment.
  2. Cree un archivo XML de diseño que contenga un elemento de fragmento (como se ve en [ 1 ]). Utilice el XML en esa página para crear un archivo XML de diseño y utilizarlo en su clase de fragmento.
  3. Inflar ese archivo XML de diseño en su clase de fragmento reemplazando onCreateView .
  4. Su aplicación debe mostrar un mapa en la pestaña que utiliza su clase de fragmento, sin embargo, cambiar a otra pestaña y volver a la pestaña de mapa resultará en un ID de vista duplicado. Para superar esto, continúe con el siguiente paso.
  5. En su clase de fragmento, reemplace el siguiente método para destruir específicamente el objeto de GoogleMap subyacente para que pueda ser recreado cuando la pestaña de mapa cargue de nuevo su clase de fragmento:
 @Override public void onDestroyView() { super.onDestroyView(); MapFragment f = (MapFragment) getFragmentManager().findFragmentById(R.id.map); if (f != null) getFragmentManager().beginTransaction().remove(f).commit(); } 

No estoy seguro si ya lo resolvió o no. Tienes que agregar servicios de Google Play como proyecto de biblioteca para que funcione. Primero intenté agregar el archivo jar, pero eso no funcionó.

  • BadParcelableException en el código de google maps
  • Recicle Android Maps V2 SupportMapFragment al girar
  • Google Maps Android: ajustar la polilínea a la calle
  • ¿Hay alguna manera de hacer pruebas funcionales con googleMaps (android)?
  • Google Maps Android API v2 - Interactive InfoWindow (como en los mapas originales de google google)
  • Cómo cambiar el color de un área en particular en Google map api v2 en android
  • Android maps v2 se bloquea cuando se vuelve a abrir en fragmento
  • Custom ViewPager para permitir que el control GoogleMap infantil se desplace horizontalmente
  • ¿Cómo manejar las actualizaciones del oyente de ubicación dentro de un servicio en Android?
  • Android, devolución de llamada cuando se completa el agrupamiento de mapas
  • ¿Debo usar MapView o MapFragment
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.