【问题标题】:kotlin missing methods for GoogleMapkotlin 缺少 GoogleMap 的方法
【发布时间】:2020-01-28 11:50:06
【问题描述】:

我正在将应用程序的一部分转换为 kotlin,但由于 Android Studio (3.5.3) 的智能感知未显示 googleMaps 的所有方法而出现问题

这是一个例子:

override fun onMapReady(googleMap: GoogleMap) {
    map = googleMap
    map.setBuildingsEnabled(true)
    map.setTrafficEnabled(true)

    map.setOnMapLoadedCallback(OnMapLoadedCallback {
        if (currentMission != null) {
            drawMission()
        } else {
            drawNoMission()
        }
    })
}

例如,我在智能感知中看不到 map.setBuildingsEnabled,请看图片

但是如果我强制调用该隐藏方法,应用程序仍然会构建,所以这是由 kotlin 或 intellisense 引起的 这可能与我得到的关于属性访问的灰色建议有关(但这不是属性,因为在谷歌地图上没有 getBuildingsEnabled

有人知道如何解决这个烦人的问题吗?我不希望 kotlin 隐藏可能对我有用的方法,谢谢。

【问题讨论】:

    标签: android google-maps android-studio kotlin


    【解决方案1】:

    遵循 Java 的 getter 和 setter 约定的方法(名称以“get”开头的无参数方法和名称以“set”开头的单参数方法)在 Kotlin 中表示为属性。

    换句话说,如果你有一个 Java 方法 setTrafficEnabled(true),Kotlin 将为你提供一个属性访问语法 isTrafficEnabled = true。这是 Kotlin 的优势之一。

    如果您忽略 Kotlin 属性访问语法并使用 getter 和 setter,它的工作原理都是一样的。

    【讨论】:

    • mmm no isTrafficEnabled 已经存在于 GoogleMap 类中,它只是一个获取,所以这不起作用。我需要设置值而不是获取它我希望有一个 trafficEnabled 属性,但它不存在,因为 googlemaps java 类没有定义 getTrafficEnabled 方法
    • @FabioAngela 这很奇怪,我在我的项目中使用 GoogleMap 类,我刚刚检查了 'isTrafficEnabled = true' 是否有效。您应该可以设置它,因为 GoogleMap 类有方法 public final void 'setTrafficEnabled(boolean var1)'
    • 我确认,它有效,问题是我在执行获取,接受的答案时确实“去定义”
    • 仍然让我感到困惑的是,setIndoorEnabled 在智能感知中是可见的,在我看来,它的实现方式与 trafficEnabled 相同
    • 啊检查反编译的类我看到 setIndoorEnabled 返回一个布尔值而其他人没有,这就是为什么 kotlink 的行为不一样
    猜你喜欢
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多