SimplePayload не может быть приведен к GeoLocation - PullRequest
0 голосов
/ 14 марта 2019

После подписки я пытаюсь разобрать местоположение из обратного вызова.Однако я получаю сообщение об ошибке.

Полезная нагрузка:

<geoloc xmlns='http://jabber.org/protocol/pubsub#event'>
   <lat xmlns='http://jabber.org/protocol/pubsub#event'>50.709793237066556</lat><lon xmlns='http://jabber.org/protocol/pubsub#event'>96.68853629387607</lon>
<dir xmlns='http://jabber.org/protocol/pubsub#event'>-2.0</dir>
</geoloc>

Код:

private val itemEventListener: (ItemPublishEvent<Item>) -> Unit = { event ->
    if (event.items.size > 0) {
        (event.items[0] as? PayloadItem<GeoLocation>)?.payload?.let { payload ->
            val bear = payload.bearing ?: 0.0
            driverLocationUpdateEvent.postValue(SmackLocation(latitude = payload.lat, longitude = payload.lon, bearing = bear))
        }
    }
}

Ошибка:

java.lang.ClassCastException : org.jivesoftware.smackx.pubsub.SimplePayload cannot
 be cast to org.jivesoftware.smackx.geoloc.packet.GeoLocation

Дайте мне знать, есливам нужно больше деталей.

...