【发布时间】:2021-01-20 17:58:22
【问题描述】:
Intent 不适用于 RestApiService 回调。
以前它在 RegisterActivity 中工作:
fun alert(text: String) {
val intent = Intent(this, PopUp::class.java)
intent.putExtra("text", text)
startActivity(intent)
}
我想将结果显示为弹出消息。 PopUp 是自定义活动视图。
当我把它放到另一个类中时,出现错误:
以下函数均不能使用参数调用
提供。 (Context!, Class!) 定义在
android.content.Intent(String!, Uri!) 定义在
android.content.Intent
import android.content.Intent
import androidx.core.content.ContextCompat.startActivity
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
class RestApiService {
// MY CUSTOM INTENT! WORKED BEFORE IF TO PLACE INTO AN ACTIVITY.
fun alert(text: String) {
val intent = Intent(this, PopUp::class.java)
intent.putExtra("text", text)
startActivity(intent)
}
fun addUser(userData: ModelUserRegister, onResult: (ModelUserRegister?) -> Unit){
val retrofit = ServiceBuilder.buildService(RestApi::class.java)
retrofit.addUser(userData).enqueue(
object : Callback<ModelUserRegister> {
override fun onFailure(call: Call<ModelUserRegister>, t: Throwable) {
onResult(null)
}
override fun onResponse(call: Call<ModelUserRegister>, response: Response<ModelUserRegister>) {
val addedUser = response.body()
if (response.code() in 200..320)
{
alert(response.message())
} else {
alert(response.message())
}
onResult(addedUser)
}
}
)
}
}
最新的研究给了我改变的建议:
val intent = Intent(this, PopUp::class.java)
到:
val intent = Intent(RegisterActivity.this, PopUp::class.java)
没有帮助。这个问题给那些想使用 Kotlin 的人!
【问题讨论】:
-
你明白
this是什么意思吗? Intent 构造函数的第一个参数是一个 Context。此外,您不能无缘无故拨打startActivity。它是上下文的函数。this和startActivity()在您的代码位于 Activity 中时工作,因为 Activity 是 一个上下文。RegisterActivity.this用于在回调中创建意图的情况,在 Kotlin 中将是this@RegisterActivity。但这不是您在这里遇到的问题。
标签: kotlin android-intent alert