首页 > 解决方案 > SupportMapFragment 不支持 AndroidX Fragment

问题描述

import com.google.android.gms.maps.SupportMapFragment;
import androidx.fragment.Fragment;
...
private SupportMapFragment mMapFragment;
...
mMapFragment = (SupportMapFragment) form.getSupportFragmentManager().findFragmentByTag(MAP_FRAGMENT_TAG);

在这里,IDE 显示androidx.fragment.Fragment无法转换为SupportMapFragment(扩展 android.support.v4.app.Fragment)的错误

我使用的是 15.0.1 版的 play-services-maps 和 1.0.0-beta01 版的 AndroidX 库。

我在发行说明中没有发现 AndroidX 之后 SupportMapFragment 的任何更新:https ://developers.google.com/maps/documentation/android-sdk/releases

编辑:在任何人问之前,form是一个Form扩展类的实例AppCompatActivity(来自 AndroidX)

标签: androidgoogle-mapsandroid-fragmentsgoogle-maps-android-api-2androidx

解决方案


此问题已在公共问题跟踪器中报告给 Google:

https://issuetracker.google.com/issues/110573930

我建议在公共问题跟踪器中为功能请求加注星标,以添加您的投票并订阅来自 Google 的进一步通知。希望谷歌能在 Android Maps SDK 的下一个版本中实现它。

更新

谷歌在公共问题跟踪器中提供了以下答案

大家好,

如前所述,Google Maps API 目前基于支持库而不是 AndroidX。未来版本的 Google Maps API 肯定会支持 AndroidX,但与此同时,以下解决方法将为您解决问题:

  • 使用 Android Studio 3.2(当前预览版)或更高版本

  • 确保您的 build.gradle 包含“compileSdkVersion 28”(新 AS 3.2 项目的默认设置)

  • 在 gradle.properties 文件中包含以下内容(新 AS 3.2 项目的默认设置)

    android.useAndroidX=true

    android.enableJetifier=true

最后,对于引用支持库的现有代码,您可以使用 Android Studio 3.2+ 中的“Refactor -> Refactor to AndroidX”工具自动转换您的代码以使用新的 AndroidX 包。


推荐阅读