嗨,我正在尝试使用虚拟坐标实现路线预览,但我收到此错误
致命异常:主要 进程:com.pkg.ir,PID:23089 java.lang.RuntimeException:java.lang.IllegalArgumentException:所有行的标题或文本都必须附加距离或持续时间跨度
这是我的代码
我正在使用这个库:实现“androidx.car.app:app:1.4.0-rc02”
class RoutePreviewScreen(carContext: CarContext) : Screen(carContext) {
@SuppressLint("UnsafeOptInUsageError")
override fun onGetTemplate(): Template {
val builder = RoutePreviewNavigationTemplate.Builder()
.setTitle("Route Details")
.setHeaderAction(Action.APP_ICON)
val currentLocation = CarLocation.create(19.269160, -103.754996)
val locationA = CarLocation.create(19.2689369, -103.7636865)
val markerA = PlaceMarker.Builder().setColor(CarColor.RED).build()
val placeA = Place.Builder(locationA).setMarker(markerA).build()
val distancia = 5
val duracion = 20
val distanceSpan = DistanceSpan.create(Distance.create(distancia.toDouble(), Distance.UNIT_KILOMETERS))
val durationSpan = DurationSpan.create(duracion.toLong())
val routeItem = Row.Builder()
.setTitle(CarText.create("From current to A"))
.addText(CarText.create("Distance: $distanceSpan"))
.addText(CarText.create("Duration: $durationSpan"))
.setMetadata(
Metadata.Builder()
.setPlace(placeA)
.build()
)
.build()
val itemList = ItemList.Builder()
.addItem(routeItem)
.build()
builder.setItemList(itemList)
val navigateAction = Action.Builder()
.setTitle("Iniciar Navegación")
.setOnClickListener {
//TODO IMPLEMENT NAVIGATION
}
.build()
builder.setNavigateAction(navigateAction)
return builder.build()
}
}
Learn Car 应用程序库基础代码实验室的第 10 步展示了如何执行此操作的示例!
您现在所做的问题是
"Distance: $distanceSpan"
实际上并没有应用跨度,它只是使用 Kotlin 字符串插值,产生常规字符串,而不是跨度字符串。
使用 Spans 的 Spantastic 文本样式 提供了有关使用 Spans 的更多详细信息,这也适用于 汽车特定的 spans,如此处提到的
DistanceSpan
、DurationSpan
,以及其他类似 CarIconSpan