谷歌地图Android API:SupportMapFragment vs MapFragment

19
我阅读了Google Maps API文档,在MapFragment部分里,建议仅在针对API 12及以上版本时使用该类。因此我推测SupportMapFragment则针对API 11及以下版本,尽管谷歌文档中未明确提到。那么如果我想要面向广泛的API级别,SupportMapFragment是否也适用于11以上的版本呢?

3
是的,它有写在文件中。 - akaya
我建议也阅读一下这个链接 (https://goo.gl/MLwDSx),因为它与问题相关。 - Sotti
2个回答

44
我假设SupportMapFragment的目标API为11及以下,尽管谷歌在文档中没有明确指出。
SupportMapFragment用于与Android支持包的片段后移一起使用。它可以在运行API 10及更低版本的Android设备上使用,也可以在运行11及更高版本的Android设备上使用。 MapFragment需要本机API Level 11片段实现,因此只能在API Level 11及更高版本的设备上使用。
请注意,据我所知,没有设备运行API Level 11 - 所有设备都已至少升级到API Level 12。

1
这就是我想知道的。我在阅读API文档时有些困惑。谢谢! - user2168777
1
我的手机仍在运行API lvl 9。HTC Desire HD没有获得操作系统升级,因为Google认为该手机上的Sense非常“好”。我刚刚查看了统计数据,仍有24%的用户使用Android 2.3或更早版本。 - erdomester
@erdomester:为了支持这些设备,您需要使用SupportMapFragment,正如我在我的答案中所指出的那样。 - CommonsWare
1
@CommonsWare:我知道。但是你说“请注意,我不知道有任何运行API Level 11的设备”是什么意思? - erdomester
2
@erdomester:我没有说“API Level 11或更低版本”。我说的是“API Level 11”。据我所知,没有设备运行API Level 11。 - CommonsWare

0

通常情况下,我们不得不使用SupportMapFragment,因为它可以进行强制类型转换:

SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
if (mapFragment != null) {mapFragment.getMapAsync(this);}

由于某些原因,FragmentManager无法返回MapFragment,尽管它通常是已知的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接