Autore Topic: Mapview in un fragment  (Letto 1173 volte)

Offline dAn89

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
    • WhiteHole - Soluzioni Informatiche
  • Sistema operativo:
    OS X
Mapview in un fragment
« il: 24 Luglio 2012, 14:21:17 CEST »
0
Ragazzi come diavolo si può mettere una mapview in un fragment? mi genera sempre errore :(

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Mapview in un fragment
« Risposta #1 il: 24 Luglio 2012, 14:30:20 CEST »
0
Generalmente è utile mettere i tentativi che hai fatto e gli errori che si presentano, comunque riporto il procedimento in modo che potrebbe essere utile a qualcun'altro.

Innanzitutto ti serve una versione modificata della support lib dove la classe FragmentActivity estende MapActivity invece che una nomale Activity. Puoi trovarla qui:
https://github.com/downloads/petedoyle/android-support-v4-googlemaps/android-support-v4-r7-googlemaps.jar

Poi devi creare in modo programmatico la MapView nella Activity

Codice (Java): [Seleziona]
public class MyMapActivity extends FragmentActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Exchanger.sMapView = new MapView(this, getString(R.string.gmap_api_key));

    }

    public static class Exchanger {
        public static MapView sMapView;
    }
}

e poi richiamarla nel fragment in questo modo:

Codice (Java): [Seleziona]
public class MapFragment extends Fragment {

    @Override
    public void onCreate(Bundle args) {
        super.onCreate(args);
        setRetainInstance(true);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup vg, Bundle data) {

        final ViewGroup parent = (ViewGroup) MyMapActivity.Exchanger.sMapView.getParent();
        if (parent != null)
            parent.removeView(MyMapActivity.Exchanger.sMapView);

                       
                //Varie ed eventuali inizializzazioni  
                       
        return MyMapActivity.Exchanger.mMapView;
    }

}

Se usi ActionBarSherlock devi cambiargli il target in Google Apis.

Spero di non essermi dimenticato nulla.
« Ultima modifica: 24 Luglio 2012, 14:35:16 CEST da Ricky` »

Offline dAn89

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
    • WhiteHole - Soluzioni Informatiche
  • Sistema operativo:
    OS X
Re:Mapview in un fragment
« Risposta #2 il: 24 Luglio 2012, 14:41:12 CEST »
0
Scusa se te lo chiedo, ma una volta scaricato il jar, vado nelle proprietà del mio progetto e carico EXTERNAL JARS giusto? poi?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Mapview in un fragment
« Risposta #3 il: 24 Luglio 2012, 14:49:38 CEST »
0
No, devi metterla nella cartella libs del progetto.

Offline dAn89

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
    • WhiteHole - Soluzioni Informatiche
  • Sistema operativo:
    OS X
Re:Mapview in un fragment
« Risposta #4 il: 24 Luglio 2012, 14:56:01 CEST »
0
Fatto, mi da

Conversion to Dalvik format failed with error 1

Offline dAn89

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
    • WhiteHole - Soluzioni Informatiche
  • Sistema operativo:
    OS X
Re:Mapview in un fragment
« Risposta #5 il: 25 Luglio 2012, 11:24:47 CEST »
0
Che errore è? Conversion to Dalvik format failed with error 1

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Mapview in un fragment
« Risposta #6 il: 25 Luglio 2012, 11:54:53 CEST »
0

Offline dAn89

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
    • WhiteHole - Soluzioni Informatiche
  • Sistema operativo:
    OS X
Re:Mapview in un fragment
« Risposta #7 il: 25 Luglio 2012, 21:51:52 CEST »
0
Ricky, ho risolto quel problema.
Ora però mi dà questo errore:

07-25 21:50:07.857: E/AndroidRuntime(765): FATAL EXCEPTION: main
07-25 21:50:07.857: E/AndroidRuntime(765): java.lang.NullPointerException


e mi dice che è su questa riga:
Codice: [Seleziona]
final ViewGroup parent = (ViewGroup) MyMapActivity.Exchanger.sMapView.getParent();
perché genera nullpointer? purtroppo non riesco a capire poiché non so il getParent() cosa dovrebbe dargli.