不可转换的类型;无法将“ android.support.v4.app.Fragment”转换为“ com.google.android.gms.maps.SupportMapFragment”
我创建了用于Google地图集成的新项目,在编辑器中也(在正在进行的项目中首次尝试过)相同类型的强制转换异常。看到过许多其他类似的问题,但是那些是针对带有SupportMapFragment的android.app.Fragment的类型转换异常,甚至他们接受的答案是使用带有SupportMapFragment的android.support.v4.app.Fragment来解决错误,但就我而言,同样给我一个错误。 (因此,这似乎是重复的,但事实并非如此。)请提出解决方案。
答案 0 :(得分:1)
经过一番深入的研究,发现在我的情况下,SupportMapFragment
扩展了Fragment
,属于{em> Jetpack的 androidx
软件包
和
我的AppCompatActivity
具有getSupportFragmentManager().findFragmentById(id)
个方法,它们返回一个Fragment
,所有这些都属于传统的android
包。
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
。