Autore Topic: MapFragment e ViewPager  (Letto 434 volte)

Offline crick

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Sistema operativo:
    KitKat 4.4.2
MapFragment e ViewPager
« il: 15 Maggio 2014, 22:44:40 CEST »
0
Salve a tutti,

sto impazzendo letteralmente nell'inserire una mappa (GoogleMap v2) all'interno di un Fragment in un ViewPager.
Partiamo dal principio, con AndroidStudio creo un progetto dal wizard con viewpager che mi genere una Activity che estende una ActionBarActivity e implementa 3 fragment all'interno del ViewPager. Tutto quando utilizzando le support library così da farlo andare anche su froyo+.
Ho risistemato il codice togliendo la inner class che genera i template dei Fragment e creati 3 fragment in classi separate con relativi xml layout e fin qui tutto ok.
Il problema viene quando voglio inserire in uno di questi fragment una mappa (googlemap v2). Prendiamo quindi il mio MyMapFragment che invece di estentere Fragment estende SupportMapFragment, aggiungo la proprietà
Codice (Java): [Seleziona]
private GoogleMap mMap;.
Modifico la onCreateView per reperire la mia mappa e farci poi il resto:

Codice (Java): [Seleziona]
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v = inflater.inflate(R.layout.fragment_map, container, false);
        mMap = ((SupportMapFragment) getFragmentManager()
                .findFragmentById(R.id.location_map)).getMap();
        return v;
    }

Il layout di questo fragment è:

Codice (XML): [Seleziona]
<FrameLayout 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"
   tools:context="it.my.app.fragment.MyMapFragment">

</FrameLayout>

Mentre il layout dell'Activity è questo:

Codice (XML): [Seleziona]
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/pager"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context="it.my.app.MainActivity">

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="match_parent" >

        <fragment
           android:id="@+id/location_map"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           class="com.google.android.gms.maps.SupportMapFragment"
           tools:layout="@layout/fragment_map" />

    </RelativeLayout>
</android.support.v4.view.ViewPager>

In pratica le modifiche effettuate sono stupide in quando grazie ad android studio ho creato i 3 fragment con i wizard e ho solo aggiunto la mappa seguendo peraltro il tutorial di google. Ovviamente nel manifest sono stati inseriti i permission e tutto il resto e l'api key (credo) è ok.

L'errore che mi viene dato quando eseguo l'app è:

Codice (Java): [Seleziona]
 android.view.InflateException: Binary XML file line #7: Error inflating class fragment
La linea di codice dove viene generato l'errore è questa:
Codice (Java): [Seleziona]
View v = inflater.inflate(R.layout.fragment_map, container, false); che è contenuta nell'onCreate illustrato poco più sopra.

Dove diavolo sta l'inghippo? Ammetto che con questi diamine di layout/codice c'ho sempre fatto a cazzotti.
Se necessario allegherò i sorgenti ma, ripeto, sono stati generati con i wizard e solo lievemente alterati e riproducibili con qualche click.

Grazie per l'aiuto.
--
  Gimme a Crick and I'll lift the world.