私は、だから、これは24未満のAndroid APIでJava 8機能インタフェースを使用する方法はありますか?
myButton.setOnClickListener(view -> Timber.d("Lambdas work!"));
これも
Runnable runLater =() -> Timber.d("Lambdas work!");
runLater.run();
を動作しますが、この1つはない
Consumer<Integer> runLaterWithInt = (Integer i) -> Timber.d("i = " + i);
runLaterWithInt.accept(3);
んが作品のAndroid APIレベルでラムダを有効にするためにretrolambdaを使用することができます最後はAndroid APIレベル24で動作しますが、他のデバイスではこのコードがクラッシュします
retrolambdaを使用する代わりに、Java 8を有効にしようとしました。最初の2つのコード例がまだ機能していますが、バターナイフは動作を停止しました。ここhttps://developer.android.com/preview/j8-jack.html#configurationava.util.function
がサポートされるように言ったが、第三いずれかを実行しているとき、私はまだクラッシュを取得され、この時間は、
java.lang.NoClassDefFoundError: com.retrolambdatry.MainActivity$-void_onCreate_android_os_Bundle_savedInstanceState_LambdaImpl1
[Java 8はAndroid api 23以上で動作しますか?](http://stackoverflow.com/questions/35934528/does-java-8-work-on-android-api-23-and-上記の質問) –
質問のタイトルが不十分です。ラムダは実際に古いAndroidバージョンにバックポートされているので、Retrolambdaは必要ありません。新しいAndroid Studioとビルドツールをインストールするだけです。 –
おそらくそれはタイトルが不十分です。私はAndroid N SDKを持っていて、ジャックのコンパイルオプションを有効にしていれば、私はretorlambdaは必要ないと理解しています。ラムダはどちらの方法でも動作します。しかし、 'java.util.function'からの機能的なインタフェースはまだありません。 – sasha199568