当我调用这个函数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
代码