2017-10-04 4 views
1

Mon projet utilise Array#sort qui requiert un niveau API 24 (Android 7.0)contrôle Android Studio est minSdkVersion pour Java 1.8 (niveau API 24) caractéristiques spécifiques

_tmp.sort((left, right) -> { ... };

Mais j'ai aussi minSdkVersion 21 (Android 5.0)

Quand je lance ce code sur Android 6.0 Emulator, l'exception suivante est générée:

... Caused by: java.lang.NoSuchMethodError: No interface method sort(Ljava/util/Comparator;)V in class Ljava/util/List; or its super classes (declaration of 'java.util.List' appears in /system/framework/core-libart.jar)

J'ai trouvé que les autres utilisateurs ont demandé au sujet de cette exception: java.lang.NoSuchMethodError: No interface method sort(Ljava/util/Comparator;) exception in sorting arraylist android

Toute bonne façon d'Android studio met en garde contre que .sort n'est pas réalisable sur les systèmes d'exploitation plus tôt que Android 7.0? comme API ayant @RequiresApi?

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { ... }

Répondre

0

studios Android sur mes ordinateurs met en garde contre mon de cette sortie de la boîte, pas très bien pourquoi le vôtre ne fonctionne pas. Peut-être avez-vous apporté des modifications à votre configuration d'avertissement de charpie? Sinon, vous devriez toujours être en mesure d'activer cela.

+0

Je savais pourquoi ... J'ai réglé 'compileOptions {sourceCompatibility JavaVersion.VERSION_1_8} '. Et puis avertit sont partis ... – kenjiuno

0

méthode de tri est annotées comme @since 1,8

Vous pouvez modifier les erreurs Android et avertissements studio niveaux dans Configuration->> ÉDITORIAL Inspections

Essayez changement> migration Java Java-niveau linguistique> usages SIDA- de l'API qui n'est pas disponible à son configure (description: "Cette inspection trouve toutes les utilisations des méthodes qui ont @since tag dans leur documentation.")

+0

Hmm. Je souhaite utiliser uniquement ** les expressions Lambda ** présentées dans [API et fonctionnalités linguistiques Java 8 prises en charge] (https://developer.android.com/guide/platform/j8-jack.html#supported-features). Cela se fait en ajoutant 'compileOptions {sourceCompatibility JavaVersion.VERSION_1_8}' à build.gradle. Cependant, cela nous a également permis d'appeler des API de niveau 24 API comme ** Array # sort ** sans validation de niveau API sur Android Studio. – kenjiuno