我正在使用 Kotlin 进行 Android 开发,并遇到了名为 polyline 的 Lateinit 变量的问题。我收到的错误表明,即使我在 onCreate 调用的函数内为折线分配了一个值,应用程序仍然崩溃,并显示折线尚未初始化的消息。
请问我该怎么办? 我有什么遗漏的吗?
请参阅下面的代码。我删除了这个问题所有不必要的代码
class CustomerMapActivity : AppCompatActivity(), OnMapReadyCallback {
private lateinit var polyline: String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityCustomerMapBinding.inflate(layoutInflater)
setContentView(binding.root)
val pickUpLocation = "Hall 2 Car Park, Benin City, Nigeria"
val dropOffLocation = "Nadia Bakery, Benin City, Nigeria"
val apiKey = R.string.google_api_key.toString()
routesDetails(pickUpLocation, dropOffLocation, apiKey)
}
override fun onMapReady(mMap: GoogleMap) {
drawRouteOnMap()
}
private fun routesDetails(origin: String, destination: String, apiKey: String){
val routeService = ServiceBuilder.buildService(RouteService::class.java)
val requestCall = routeService.getRoutes(origin, destination, apiKey)
requestCall.enqueue(object: Callback<RoutesResponse> {
override fun onResponse(call: Call<RoutesResponse>, response: Response<RoutesResponse>) {
if (response.isSuccessful) {
if (routeResponse != null && routeResponse.routes.isNotEmpty()){
polyline = response.body()?.routes?.get(0)?.overview_polyline?.points.toString()
}else{
}
}
}
override fun onFailure(call: Call<RoutesResponse>, t: Throwable) {
}
})
}
private fun drawRouteOnMap() {
val decodedPolyline = PolyUtil.decode(polyline)
}
如果没有堆栈跟踪或其他代码,我们只能猜测其根本原因。
话虽如此,我的猜测是,在对
drawRouteOnMap()
的调用成功完成之前,正在调用 onMapReady(...)
(通过 routeService.getRoutes(origin, destination, apiKey)
)。