【发布时间】:2011-07-03 19:40:21
【问题描述】:
现在最终的 SDK 已经与 google api 一起发布了 - 使用 MapView 创建 Fragment 的最佳方法是什么? MapView 需要一个 MapActivity 才能正常工作。
让 Activity 管理 Fragments 从 MapActivity 继承(不好的解决方案,因为它违背了 Fragments 是自包含的想法)并且使用基于 xml 的常规布局不起作用。我在 MapActivity.setupMapView() 中得到 NullPointerException:
E/AndroidRuntime(597):引起:java.lang.NullPointerException E/AndroidRuntime(597):在 com.google.android.maps.MapActivity.setupMapView(MapActivity.java:400) E/AndroidRuntime(597):在 com.google.android.maps.MapView.(MapView.java:289) E/AndroidRuntime(597):在 com.google.android.maps.MapView.(MapView.java:264) E/AndroidRuntime(597):在 com.google.android.maps.MapView.(MapView.java:247)我的第二个想法是以编程方式创建 MapView 并将关联的活动(通过 getActivity())作为上下文传递给 MapView 构造函数。不工作:
E/AndroidRuntime(834):原因:java.lang.IllegalArgumentException:MapViews 只能在 MapActivity 的实例中创建。 E/AndroidRuntime(834):在 com.google.android.maps.MapView.(MapView.java:291) E/AndroidRuntime(834):在 com.google.android.maps.MapView.(MapView.java:235) E/AndroidRuntime(834):在 de.foo.FinderMapFragment.onCreateView(FinderMapFragment.java:225) E/AndroidRuntime(834):在 android.app.FragmentManagerImpl.moveToState(FragmentManager.java:708) E/AndroidRuntime(834):在 android.app.FragmentManagerImpl.moveToState(FragmentManager.java:900) E/AndroidRuntime(834):在 android.app.FragmentManagerImpl.addFragment(FragmentManager.java:978) E/AndroidRuntime(834):在 android.app.Activity.onCreateView(Activity.java:4090) E/AndroidRuntime(834):在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:664)真的应该有像 MapFragment 这样的东西来处理 MapView 需要的后台线程我猜......那么目前的最佳实践是什么?
来自德国的感谢和问候, 瓦伦丁
【问题讨论】:
-
我报告了一个功能请求。请给它加星。 code.google.com/p/android/issues/detail?id=15347
标签: android google-maps android-fragments android-maps android-3.0-honeycomb