android - 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)
解决方案
此问题已在公共问题跟踪器中报告给 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 包。
推荐阅读
- css - flexbox 拒绝按照我的意图证明内容的合理性
- javascript - 创建一个独特组合的数组
- mongodb - 从 linux 连接 mongo 数据库副本集的问题,单实例运行正常。使用 .net 核心 mongo 驱动程序
- php - 支付 WooCommerce 订单时如何重新保存可变产品的所有变体?
- ios - TPPDF ios中每一页的页脚
- server - 如何在 HAproxy 中设置自定义数量的备份后端服务器?
- javascript - 如何将照片注入 Gatsby 网站?
- sql - 案例表达式给出“日期数据类型到日期时间数据类型的转换导致超出范围的值”。
- javascript - 在 JavaScript 中合并两个多维数组的口袋
- javascript - Pdftron Webviewer 自定义表单域