我已经在Android Studio中创建了一个新的Kotlin项目,现在我正在尝试在该项目中使用Fuel HTTP library。但是,当我尝试使用GitHub自述文件中的示例中的函数时,出现两个错误:

  • “下列函数均不能使用提供的参数来调用。” -关于responseString的引用
  • “无法推断此参数的类型。请明确指定它。” -在回调函数
  • 的每个参数上

    这是我正在使用的代码:
    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
            })
        }
    }
    

    我的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()
    }
    

    我该如何解决这些错误?

    最佳答案

    responseString有几个重载,您在Readme中经常使用的重载具有以下签名:

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

    如您所见,第一个参数具有默认值。还要注意,第二个(也是最后一个)参数是没有默认值的lambda。如果您选择使用默认参数值(charset),则还需要为后续参数使用默认值,否则您将需要使用named arguments:
    Fuel.get("http://httpbin.org/get").responseString(handler = {request, response, result ->
        // Some callback code her
    })
    

    因为:



    您还可以使用自述文件中指定的方法,但使用而不带括号:
    Fuel.get("http://httpbin.org/get").responseString {request, response, result ->
        // Some callback code her
    }
    

    10-05 22:06