我收到以下运行时错误:
checkParameterIsNotNull, parameter oneClickTokens
at com.info.app.fragments.Fragment_Payment_Profile$fetchMerchantHashes$1.onPostExecute(Fragment_Payment_Profile.kt:0)
at com.info.app.fragments.Fragment_Payment_Profile$fetchMerchantHashes$1.onPostExecute(Fragment_Payment_Profile.kt:1543)
这是我的代码:
private fun fetchMerchantHashes(intent: Intent) {
// now make the api call.
val postParams = "merchant_key=$key&user_credentials=$var1"
val baseActivityIntent = intent
object : AsyncTask<Void, Void, HashMap<String, String>>() {
override fun doInBackground(vararg params: Void): HashMap<String, String>? {
...
}
override fun onPostExecute(oneClickTokens: HashMap<String, String>) {
super.onPostExecute(oneClickTokens)
...
}
}.execute()
}
函数调用似乎无效。但是,我不知道如何解决这个问题。我错过了什么 Kotlin 特有的内容吗?
例外非常明显:您正在传递参数的null
。
默认情况下,Kotlin中的所有变量和参数都是非空的。如果要null
参数传递给方法,则应向其类型添加?
,例如:
fun fetchMerchantHashes(intent: Intent?)
有关更多信息:零安全。
在我的情况下,此错误警告可能将 null 作为参数传递。三种纠正方式。
- 在相应位置更改参数的类型。如果它是从 Java 接收的,请将
@NonNull
注释添加到变量定义中。 - 将
!!
添加到方法的参数中。 - 将
?
添加到 Kotlin 类中的参数。我认为,如果在 Java 类中没有使用注释(如@Nullable
、@NonNull
(,Kotlin 转换工具可能会默认执行此操作。
简单的答案肯定会起作用...... 当您使用 Rest 客户端(Web 服务调用((GET 或 POST(从服务器获取数据时,如果 json 响应中可能存在空参数值,并且您正在获取参数并将其附加到 textview,则会收到此错误。
解决方案:只需将 ? 标记到变量,如下所示。
例:
var batchNo: String? = "" (Correct Approach)
var batchNo= "" (Will Get Error)
在这里,我正在尝试使用服务调用获取批处理否。
在使用 Android Studio 转换工具将活动从 Java 转换为 Kotlin 后,我遇到了类似的异常。所以,我得到了override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent)
没错override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)
intent: Intent?
的差异
对于每个绑定适配器,将 item 参数的类型更改为可为空,并将正文括起来
项目?。让{...}
谷歌文档中的来源