En supposant que vous voulez utiliser lambda, ce est une réponse à deux options en fonction de votre version AS
2.3.3 et inférieure
D'abord, vous avez besoin Pour activer Jack et utiliser Java 8. Notez que jack est officiellement obsolète, mais pour AS 2.3.3 et plus bas, c'est la seule option pour obtenir Java 8 (option vraiment buggy cependant. Lambda peut être utilisé dans Java 7 (ou inférieur) à l'aide d'une bibliothèque, décrite à la fin de cette publication):
android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
3,0 (bêta lors de l'écriture ce) et au-dessus
AS 3.0 supporte java 8 sans besoin d'activer Jack. Donc, tout ce dont vous avez besoin est:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
En supposant que vous avez Java 8 installé, vous pouvez maintenant utiliser lambda.
L'autre solution de contournement (si vous ne pouvez pas obtenir Java 8 pour compiler ou ne pas vouloir traiter avec jack ou toute autre raison) est comme chornge dit dans sa réponse de ne pas utiliser lambda ou Java 8 et juste utiliser le système de classe interne anonyme.
Alternative
D'un côté note, vous avez écrit dans votre message que vous ne voulez pas utiliser Java 8, mais utilisez lambda. Vous pouvez (en théorie, ne l'ai pas testé moi-même) utiliser retrolambda. C'est une bibliothèque qui ajoute le support lambda pour Java < = 7
Pourquoi quelqu'un * ne * voudrait-il pas passer à Java 8? Toutes les versions précédentes ont été End Of Life depuis des années maintenant! –
@JoeC Ce n'est pas une exception qui est lancée, c'est un message de mon ide, mais merci pour votre réponse. – romaneso
@JoeC parce que java 8 dans android est toujours en version bêta, et l'utilisation de la bêta me rend un peu tremblant – romaneso