12 votes

Création d'un service non lié en Kotlin

J'essaie de créer un simple service non lié en Kotlin, mais je n'y arrive pas. Lorsque je surcharge onBind() en Java, je peux retourner null mais dans Kotlin, il est dit que je ne peux renvoyer que les éléments suivants IBinder et non IBinder? ça veut dire que ça ne peut pas être null . Avez-vous des idées pour résoudre ce problème, à part réécrire la classe MyService en Java ?

[SOLVÉ] Merci, les gars ! Je peux vraiment changer IBinder a IBinder? . Ça marche !

15voto

mate Points 155

Comme Enrico l'a mentionné, vous pouvez changer un type de IBinder a IBinder? et il correspondra toujours à l'interface.

Un exemple est donné ci-dessous :

override fun onBind(intent: Intent): IBinder? {
   return null
}

En général, il faut être prudent lorsqu'on utilise Android Studio pour remplacer des méthodes Android. Le vrai problème vient lorsqu'il génère un type non nul alors que le système peut en fait retourner une référence nulle. Cela provoque des exceptions kotlin à l'exécution auxquelles vous ne vous attendez vraiment pas.

Si je me souviens bien, j'ai eu beaucoup de problèmes lors de la surcharge. Fragment et les méthodes liées à View création.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X