2014-06-13 16 views
5

Come utilizzare le espressioni lambda in Android? Per esempio, ho compilare il codice in IntelliJ IDEA:espressioni Lambda in android

package com.example.myapp; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.os.Bundle; 

public class MyActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     test s =() -> {return "Lambda expressions test";}; 
     AlertDialog alertDialog = new AlertDialog.Builder(this) 
       .setTitle("Lambda expression") 
       .setMessage(s.t()) 
       .create(); 
     alertDialog.show(); 
    } 
} 
interface test { 
    public String t(); 
} 

Ma avere questo erorrs:

Information:Using javac 1.8.0_05 to compile java sources 
Information:36 errors 
Information:0 warnings 
Information:Compilation completed with 36 errors and 0 warnings in 29 sec 
Error:Android Dex: [myappі] UNEXPECTED TOP-LEVEL EXCEPTION: 
Error:Android Dex: [myappі] com.android.dx.cf.iface.ParseException: InvokeDynamic not supported 

come impostare in modo da poter utilizzare le espressioni lambda?

+3

Android supporta java 6/7 non 8, credo. lambda è stato introdotto in Java 8 credo che – Raghunandan

+1

sì, lambda sia stato introdotto in java 8, ma cosa posso fare se c'è già un sacco di codice scritto con un'espressione lambda – user3430722

+0

@Raghunandan Si sbaglia. Lambdas funziona facilmente su Android Studio se si imposta build.gradle per l'utilizzo di Java 8. –

risposta

3

Nella tua build.gradle aggiungere questo:

compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_8 
    targetCompatibility JavaVersion.VERSION_1_8 
} 

Supponendo che si è installato Java 8 sul tuo computer!

Inoltre, aggiungere questo:

dependencies { 
    classpath 'com.android.tools.build:gradle:1.0.0' 
    classpath 'me.tatarka:gradle-retrolambda:2.5.0' 
} 

E infine:

apply plugin: 'me.tatarka.retrolambda' 
1

Java 8 caratteristiche del linguaggio sono ora supportati dal sistema di compilazione Android

Ieri, abbiamo rilasciato Android Studio 2.4 Anteprima 6. Lingua Java 8 Le funzioni ora sono supportate dal sistema di build Android in javac/dx percorso di compilazione. plug Gradle di Android Studio ora desugars Java 8 file di classe al file di classe compatibile con 7 Java, in modo da poter utilizzare lambda, metodo riferimenti e altre caratteristiche di Java 8.

Fonte: https://android-developers.googleblog.com/2017/04/java-8-language-features-support-update.html

Edit: 06/01/2017

Lambda Expressions ora supportato in Android Studio 3.0

Problemi correlati