如何创建一个具有调用功能的函数,可以向其添加addOnSuccessListener

时间:2019-07-03 10:43:52

标签: android kotlin

不确定如何表达此问题。我想创建一个函数,当调用该函数时,可以在继续下一个函数之前向其添加addOnSuccessListener

我知道,当我让函数返回Task<Void>时,我可以在其中添加addOnSuccessListener,但是在函数本身中,我不确定要返回什么,因为我正在执行的操作是将EditText输入保存为变量的简单过程。不确定要返回什么任务。

这是我的功能:

fun saveInput(): Task<Void> {
    email = emailInput.text.toString()
    phone = phoneInput.text.toString()
    whatsApp = whatsAppInput.text.toString()

    return //notSureWhatToReturnHere
}

我希望能够做这样的事情:

saveInput.onSuccess{
//do something
}

1 个答案:

答案 0 :(得分:0)

像这样吗?

class Worker<T> {
    private var successListener: ((result: T) -> Unit)? = null

    fun onSuccess(result: T) {
        successListener?.run { this(result) }
    }

    fun addSuccessListener(listener: (result: T) -> Unit): Worker<T> {
        successListener = listener
        return this
    }
}

class MyRandomClass {
    fun doSomething(variable: String): Worker<String> {
        val worker: Worker<String> = Worker()
        val result = variable.reversed()
        worker.onSuccess(result)
        return worker
    }
}
//... in code
val randomClass = MyRandomClass()
randomClass.doSomething("Hello World")
    .addSuccessListener {
        Log.d(TAG, "Result is: $it")
    }
}