0

我正在尝试在我的 kotlin 应用程序中使用 TOMTOM 搜索 API

这是我的代码:

    private fun testSearch() {

        val observer = object : DisposableSingleObserver<FuzzySearchResponse>() {
            val text = "cairo"
            val search = FuzzySearchQueryBuilder.create(text).build()
            override fun onSuccess(fuzzySearchResponse: FuzzySearchResponse) {
                search.success(fuzzySearchResponse.results)
            }

            override fun onError(throwable: Throwable) {
                search.error(null, Error(throwable.message))
            }
        }
    }

在我的文件中添加 APIAndroidManfist.xml并初始化 tomtom 搜索Gradle

如图所示,IDLE 找不到引用错误或成功。

在此处输入图像描述

4

1 回答 1

1

您的 IDE 找不到引用,因为您在FuzzySearchQuery对象内部而SearchApi不是在代码中根本没有定义的对象中查找它。请在以下(稍作修改)函数中找到解决方案:

private fun testSearch() {

    val searchApi = OnlineSearchApi.create(applicationContext)!!
    val text = "cairo"
    val searchQuery = FuzzySearchQueryBuilder.create(text).build()

    val observer = object: DisposableSingleObserver<FuzzySearchResponse>() {
        override fun onSuccess(t: FuzzySearchResponse) {
            for (r in t.results) {
                Toast.makeText(applicationContext, r.address.freeformAddress, Toast.LENGTH_SHORT).show()
            }
        }
        override fun onError(e: Throwable) {
            Toast.makeText(applicationContext, "err", Toast.LENGTH_SHORT).show()
        }
    }
    searchApi.search(searchQuery).subscribeWith(observer)
}
于 2019-10-08T13:22:37.163 回答