MapView em um fragmento (favo de mel)

agora que o SDK final foi lançado com as APIs do Google - qual é a melhor maneira de criar um fragmento com um MapView? O MapView precisa de um MapActivity para funcionar corretamente.

Ter a atividade gerenciando os fragmentos herdada do MapActivity (solução ruim porque contraria a idéia de que os fragmentos são independentes) e usar um layout regular baseado em xml não funciona. Eu recebo uma NullPointerException em MapActivity.setupMapView ():

E/AndroidRuntime(  597): Caused by: java.lang.NullPointerException
E/AndroidRuntime(  597):    at com.google.android.maps.MapActivity.setupMapView(MapActivity.java:400)
E/AndroidRuntime(  597):    at com.google.android.maps.MapView.(MapView.java:289)
E/AndroidRuntime(  597):    at com.google.android.maps.MapView.(MapView.java:264)
E/AndroidRuntime(  597):    at com.google.android.maps.MapView.(MapView.java:247)

Minha segunda idéia foi criar o MapView programaticamente e passar a atividade associada (via getActivity ()) como Contexto para o construtor MapView. Não funciona:

E/AndroidRuntime(  834): Caused by: java.lang.IllegalArgumentException: MapViews can only be created inside instances of MapActivity.
E/AndroidRuntime(  834):    at com.google.android.maps.MapView.(MapView.java:291)
E/AndroidRuntime(  834):    at 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)

Realmente deve haver algo como o MapFragment que cuida dos segmentos de segundo plano que o MapView precisa, eu acho ... Então, qual é a melhor prática atual para fazer isso?

Obrigado e cumprimentos da Alemanha, Valentin

questionAnswers(12)

yourAnswerToTheQuestion