"Ninguna de las siguientes funciones se puede invocar con los arguments suministrados" con Fuel HTTP

Creé un nuevo proyecto de Kotlin en Android Studio, y ahora estoy tratando de usar la biblioteca Fuel HTTP en ese proyecto. Sin embargo, cuando bash usar las funciones como en los ejemplos en el file Léame de GitHub, obtengo dos errores:

  1. "Ninguna de las siguientes funciones se puede invocar con los arguments suministrados". – en la reference a responseString Captura de pantalla

  2. "No se puede inferir un tipo para este parámetro. Especifíquelo explícitamente". – en cada uno de los arguments a la function de callback

Este es el código que estoy usando:

package me.myname.morefueltesting import android.support.v7.app.ActionBarActivity import android.os.Bundle import android.view.Menu import android.view.MenuItem import com.github.kittinunf.fuel.Fuel public class MainActivity : ActionBarActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) /* First error /--Second errors--\ | | | | \/\/\/\/\/\/\/ \/\/\/\ /\/\/\/\ /\/\/\ */ Fuel.get("http://httpbin.org/get").responseString({request, response, result -> // Some callback code here }) } } 

Mi build.gradle :

 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { compileSdkVersion 22 buildToolsVersion '22.0.1' defaultConfig { applicationId "me.myname.morefueltesting" minSdkVersion 15 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets { main.java.srcDirs += 'src/main/kotlin' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.1.0' compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" compile 'com.github.kittinunf.fuel:fuel-rxjava:1.3.1' compile 'com.github.kittinunf.fuel:fuel-android:1.3.1' } buildscript { ext.kotlin_version = '1.0.3' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } repositories { mavenCentral() } 

¿Cómo puedo resolver estos errores?

Hay varias sobrecargas de responseString la que ves utilizada mucho en el Léame tiene la siguiente firma:

 fun responseString( charset: Charset = Charsets.UTF_8, handler: (Request, Response, Result<String, FuelError>) -> Unit): Request 

Como puede ver, el primer parámetro tiene un valor pnetworkingeterminado. Observe también que el segundo argumento (y el mismo último) es un lambda que no tiene valor pnetworkingeterminado. Si elige usar un valor de parámetro pnetworkingeterminado ( charset ), también necesita usar valores pnetworkingeterminados para los parameters posteriores o tendrá que usar arguments con nombre :

 Fuel.get("http://httpbin.org/get").responseString(handler = {request, response, result -> // Some callback code her }) 

Porque:

En Kotlin, existe la convención de que si el último parámetro de una function es una function, ese parámetro se puede especificar fuera de los paréntesis

También puede usar el método como se especifica en el file Léame pero sin paréntesis :

 Fuel.get("http://httpbin.org/get").responseString {request, response, result -> // Some callback code her } 

Entendido, estaba usando una versión extremadamente antigua de Android Studio (1.1 cuando la última es 2.1). La actualización de Android Studio corrigió todos los errores que mencioné, así como algunos otros que encontré mientras jugaba donde faltaban algunas funciones integradas de SDK.

  • Kotlin - Diferencia entre el bucle "forEachIndexed" y "for in"
  • ¿Kotlin necesita un marco DI?
  • Problema de actualización de Android Gradle plugin 3.0.0
  • ¿Falta la sala de cheques SQL en time de compilation?
  • cómo a la matriz de initialization en Kotlin?
  • Error al configurar el reino con kotlin
  • ¿Conversión de Kotlin SAM con una interfaz Java interna privada?
  • Estudio Android convertido a Kotlin: use @JvmStatic en algunos casos
  • Enfoque correcto para la class de Kotlin inyectada de constructor inmutable
  • kotlin coroutine val vs diversión
  • ¿Cómo obtengo los encabezados de respuesta con RxAndroid + Retrofit en Kotlin?