Was ist der beste Weg, um ein Fragment mit einer MapView zu erstellen, nachdem das endgültige SDK mit Google Apis veröffentlicht wurde? MapView benötigt eine MapActivity, um richtig zu funktionieren.
Es funktioniert nicht, wenn die Aktivität, die die Fragmente verwaltet, von MapActivity erbt (schlechte Lösung, da dies gegen die Idee verstößt, dass Fragmente in sich geschlossen sind) und ein reguläres XML-basiertes Layout verwendet. Ich erhalte eine NullPointerException in MapActivity.setupMapView ():
E / AndroidRuntime (597): Auslöser: java.lang.NullPointerException E / AndroidRuntime (597): unter com.google.android.maps.MapActivity.setupMapView (MapActivity.java:400) E / AndroidRuntime (597): unter com.google.android.maps.MapView. (MapView.java:289) E / AndroidRuntime (597): unter com.google.android.maps.MapView. (MapView.java:264) E / AndroidRuntime (597): unter com.google.android.maps.MapView. (MapView.java:247)
Meine zweite Idee war, MapView programmgesteuert zu erstellen und die zugehörige Aktivität (über getActivity ()) als Kontext an den MapView-Konstruktor zu übergeben. Funktioniert nicht:
E / AndroidRuntime (834): Auslöser: java.lang.IllegalArgumentException: MapViews können nur in Instanzen von MapActivity erstellt werden. E / AndroidRuntime (834): unter com.google.android.maps.MapView. (MapView.java:291) E / AndroidRuntime (834): unter com.google.android.maps.MapView. (MapView.java:235) E / AndroidRuntime (834): at de.foo.FinderMapFragment.onCreateView (FinderMapFragment.java:225) E / AndroidRuntime (834): at android.app.FragmentManagerImpl.moveToState (FragmentManager.java:708) E / AndroidRuntime (834): at android.app.FragmentManagerImpl.moveToState (FragmentManager.java:900) E / AndroidRuntime (834): at android.app.FragmentManagerImpl.addFragment (FragmentManager.java:978) E / AndroidRuntime (834): at android.app.Activity.onCreateView (Activity.java:4090) E / AndroidRuntime (834): at android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:664)
Eigentlich sollte es so etwas wie MapFragment geben, das sich um die Hintergrundthreads kümmert, die MapView benötigt, denke ich ... Also, was ist die aktuelle Best Practice, um dies zu tun?
Danke und Grüße aus Deutschland, Valentin