Google的SupportMapFragment类型强制转换为v4片段

时间:2019-06-20 09:59:22

标签: android androidx

不可转换的类型;无法将“ android.support.v4.app.Fragment”转换为“ com.google.android.gms.maps.SupportMapFragment”

我创建了用于Google地图集成的新项目,在编辑器中也(在正在进行的项目中首次尝试过)相同类型的强制转换异常。看到过许多其他类似的问题,但是那些是针对带有SupportMapFragment的android.app.Fragment的类型转换异常,甚至他们接受的答案是使用带有SupportMapFragment的android.support.v4.app.Fragment来解决错误,但就我而言,同样给我一个错误。 (因此,这似乎是重复的,但事实并非如此。)请提出解决方案。

1 个答案:

答案 0 :(得分:1)

经过一番深入的研究,发现在我的情况下,SupportMapFragment扩展了Fragment,属于{em> Jetpack的 androidx软件包

我的AppCompatActivity具有getSupportFragmentManager().findFragmentById(id)个方法,它们返回一个Fragment,所有这些都属于传统的android包。

根据{{​​3}}

androidx软件包与android软件包完全不同,但与之平行。

  

AndroidX将原始的支持库API包映射到   androidx名称空间。仅软件包和Maven工件名称已更改;   类,方法和字段名称保持不变。

所以,我得到了type-cast-exception,如以下语句所示:

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

例外:

  

不可转换的类型;无法将'android.support.v4.app.Fragment'强制转换为   'com.google.android.gms.maps.SupportMapFragment'

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