使用v4 Fragment的Google的SupportMapFragment类型转换异常

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (61)

不可转换的类型; 无法将'android.support.v4.app.Fragment'投射到'com.google.android.gms.maps.SupportMapFragment'

我为谷歌地图集成创建了新项目,还有(在正在进行的项目中首次尝试)编辑器中的相同类型转换异常。已经看过很多其他类似的问题,但是那些用于带有SupportMapFragment的android.app.Fragment的类型转换异常,甚至他们接受的答案是使用android.support.v4.app.Fragment和SupportMapFragment来解决错误,但在我的情况下,这同样给了我一个错误。(所以这可能看似重复,但相反不是。)。请为此建议解决方案。

提问于
用户回答回答于

经过一次深潜,发现在我的情况下,SupportMapFragment延伸Fragment属于Jetpack的 androidx包装

AppCompatActivitygetSupportFragmentManager().findFragmentById(id)方法返回Fragment,所有这些都属于传统android包。

androidxandroid根据文档,package 与包完全不同但并行

AndroidX将原始支持库API包映射到androidx命名空间。只有包和Maven工件名称发生了变化; 类,方法和字段名称没有改变。

所以,我得到了类型转换异常,如下面的声明:

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);

例外:

不可转换的类型; 无法将'android.support.v4.app.Fragment'投射到'com.google.android.gms.maps.SupportMapFragment'

为了解决此问题,我需要将现有项目迁移到androidx

扫码关注云+社区

领取腾讯云代金券