不可转换的类型;不能将“android.support.v4.app.Fragment”强制转换为'com.google.android.gms.maps.SupportMapFragment'
我为谷歌地图集成创建了新的项目,编辑器中也有(在正在进行的项目中第一次尝试)相同的类型转换异常。我见过许多其他类似的问题,但这些问题是针对带有SupportMapFragment的android.app.Fragment的类型转换异常的,甚至他们接受的答案是使用带有SupportMapFragment的android.support.v4.app.Fragment来解决错误,但在我的例子中,同样的问题给了我一个错误。(因此,这看起来可能是重复的,但事实并非如此。)请对此提出解决方案。
发布于 2019-06-21 03:22:53
在深入研究之后,我发现在我的例子中,SupportMapFragment
扩展了属于Jetpack的androidx
包的Fragment
和
我的AppCompatActivity
有返回Fragment
的getSupportFragmentManager().findFragmentById(id)
方法,所有这些都属于传统的android
包。
根据docs,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
。
https://stackoverflow.com/questions/56683482
复制相似问题