Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cómo puedo suprimir nuevo anónimo runnable () se puede sustituir por lambda

Tengo "nuevo anónimo runnable () se puede reemplazar con lambda" advertencia con el código siguiente.

final ScrollView sv = (ScrollView) findViewById(R.id.scrollView); sv.post(new Runnable() { @Override public void run() { sv.fullScroll(ScrollView.FOCUS_DOWN); } }); 

Busqué en Google muy duro y parece ser re-escribir utilizando la expresión lambda …

 final ScrollView sv = (ScrollView) findViewById(R.id.scrollView); Runnable test = () -> sv.fullScroll(ScrollView.FOCUS_DOWN); test.run(); 

Pero cuando intento ejecutar la aplicación, Android Studio se detiene con el error de la siguiente manera:

 Error:(78, 40) error: lambda expressions are not supported in -source 1.7 (use -source 8 or higher to enable lambda expressions) 

No puedo entender por qué Android Studio me permite usar la expresión lambda aunque no pueda compilar. ¿Es un error?

Además, traté de usar gradle-retrolambda , pero es difícil de usar para biginner.

Como no puedo compilar mi código, no estoy seguro de que la expresion de lambda sea correcta o no.

En mi opinión, IDE no debe quejarse de que el código no puede ser compilado. Así que creo que la advertencia de usar la expresión lambda debe ser suprimida. Pero no sé cómo puede ser …

Cualquier ayuda es apreciada.

3 Solutions collect form web for “¿Cómo puedo suprimir nuevo anónimo runnable () se puede sustituir por lambda”

En primer lugar, "anónimo nuevo runnable () puede ser reemplazado por lambda" es una advertencia como usted ha dicho. Mientras que las advertencias como esta no son tan graves como los errores del compilador, todavía debe comprender las razones de la advertencia con el fin de tomar una decisión informada de cómo tratar con él. En este caso, la advertencia proviene del IDE, no del compilador y se puede ignorar con seguridad. Android Studio debería tener una configuración en la que deshabilitar esta advertencia, pero no he podido encontrar exactamente cómo hacerlo. Comenzaría haciendo clic en el new Runnable() texto new Runnable() en su código fuente y presionando Alt-Enter para ver las opciones de arreglos rápidos.

Como alternativa, si desea utilizar las funciones lambda en su código, debe habilitar la compatibilidad con Java 8, como el mensaje de error que obtiene. Tenga en cuenta que algunas funciones de Java 8 sólo están disponibles si su aplicación se dirige a Kit Kat o posteriormente. Las funciones Lambda están soportadas en versiones anteriores de Android, por lo que no tiene que preocuparse en este caso. Para habilitar Java 8 para su proyecto, modifique el archivo build.gradle para que build.gradle un aspecto similar al siguiente:

 android { compileSdkVersion 19 buildToolsVersion "19.0.0" defaultConfig { minSdkVersion 7 targetSdkVersion 19 } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } 

La parte importante es el cierre de compileOptions . El resto es dar contexto donde pertenece dentro del archivo.

Tenga en cuenta que no he compilado y probado esto. Además, no estoy seguro si necesitas tanto sourceCompatibility como targetCompatibility . Le sugiero que haga algunas investigaciones y experimentos para determinar si ambos son necesarios para compilar y ejecutar su aplicación en los dispositivos que desea orientar.

Fuentes:

Cómo establecer -source 1.7 en Android Studio y Gradle

Funciones de Java 8 en Android Development

En primer lugar, uno debe saber la diferencia entre errores de tiempo de compilación y errores de tiempo de ejecución .

Más información sobre los errores de tiempo de ejecución frente a tiempo de compilación:
Tiempo de ejecución vs tiempo de compilación
Advertencias y Errores

La razón detrás del error que usted está consiguiendo es que no es apoyado en versiones de Java <1.8.

La solución de este problema es que debe cambiar la versión Java de su proyecto a 1.8

Aquí está el procedimiento de hacer eso:
Uso de JDK 7 o superior con Android Studio y Eclipse en Mac OSX

Espero que esto ayude.

Después de buscar con Google, me he dado cuenta de que Android no es compatible con JDK8 oficialmente. Ver este enlace

Aunque podemos codificar JDK8 sabor con Retrolambda , (para Android Studio, es gradle-retrolambda ), o RxJava , son sólo un sabor

Mi problema fue causado instalando JDK8, en vez de debe instalar JDK7.
Pensé que es preferible instalar JDK8 porque oracle oficialmente soporta JDK8 ahora y han terminado de actualizar JDK7, pero es un pensamiento equivocado.

Después de haber desinstalado JDK8 e instalado JDK7, IDE no advierte a usar la expresión lambda, o no ocurre las expresiones lambda no son compatibles en el error -source 1.7 en la compilación.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.