Kotlin 错误 尝试调用虚拟方法 'android.content.Context android.content.Context.getApplicationContext()'



当我调用这个函数validateCertificate()时,我遇到了这个问题,我已经寻找了所有东西,但没有任何东西适合我。

本行出现的错误=>Gsurf(this). initializegsurf ()

类CardTransactionUseCase(call: MethodCall): AppCompatActivity() {

private var salefinished = false
private lateinit var textValue: String
private val gson = Gson()
private lateinit var params: Params
private var methodCallled: MethodCall = call
// validacao do certificado
fun validateCertificate() {
Log.i("validatecertificate => ", "Caiu no validate")
Log.i("Gsurf( this ) => ", "Gsurf( this ) => ${Gsurf( this ).application}")
Gsurf( this ).inicializeGsurf().observe(this) {
Log.i("validatecertificate => ", "${it.code} - ${it.message}")
when ( it!!.code ) {
200 -> {
Log.i("validateCertificate", "${it.code} -- ${it.message}")
createTransaction()
}
400 -> {
Log.i("validateCertificate", "${it.code} -- ${it.message}")
validateResponseRsa(it.code, it.message)
}
422 -> createCertificate()
}
}
}

}

这里是日志错误

E/methodchannel#项目:处理方法调用失败java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'android.content.Context android.content.Context. getapplicationcontext ()'

android.content.ContextWrapper.getApplicationContext (ContextWrapper.java: 128)

在gsurfnet.sc3androidclient.libgsurf.gsurf.Gsurf.inicializeGsurf (Gsurf.kt: 11)

project.validateCertificate (CardTransactionUseCase.kt: 32)

Gsurf需要一个Context,您可能试图在这里传递:

Gsurf( this )

但是Activity并不是一个确切的上下文,它可以访问-但是当你启动Activity时,这是由系统设置的,它通过onCreate等。但是如果你不使用CardTransactionUseCase作为Activity显示,它只是一个你自己创建的对象(例如CardTransactionUseCase()),那么它就不会有Context设置在它上面。

这就是为什么你会得到这个错误:

Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference

因为上下文仍然是null


如果这是你正在做的,那么Mike的评论是正确的-它不应该是Activity,如果你需要Context,那么只需传入一个。

如果将其用作真正的Activity,那么确保至少在onCreate之前不要试图访问context。不要声明任何顶级变量,也不要运行任何试图在构造时访问它的init代码

相关内容

  • 没有找到相关文章

最新更新