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