簡體   English   中英

IllegalArgumentException:指定為非空的參數為空

[英]IllegalArgumentException: Parameter specified as non-null is null

我收到以下運行時錯誤

 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-safety

在我的情況下,此錯誤警告可能將 null 作為參數傳遞。 三種矯正方式。

  1. 在相應的地方更改參數的類型。 如果它是從 Java 接收的,則在變量定義中添加@NonNull注釋。
  2. 添加!! 到方法的參數。
  3. 添加? 到 Kotlin 類中的參數。 我認為,如果在 Java 類中沒有使用注釋(如@Nullable@NonNull ),Kotlin 轉換工具可能會默認執行此操作。

簡單的答案肯定會奏效...當您使用 Rest Client(Web 服務調用)(GET 或 POST)從服務器獲取數據時,如果 json 響應中可能存在空參數值,並且您正在獲取參數並將其附加到 textview 會出現此錯誤..

解決方案:只需附加 ? 標記到變量如下..

例子:

var batchNo: String? = "" (Correct Approach)
var batchNo= "" (Will Get Error)

在這里,我試圖使用服務調用來獲取 batchNo。

使用 Android Studio 轉換工具將 Activity 從 Java 轉換為 Kotlin 后,我遇到了類似的異常。 所以,我得到了override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent)

正確override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)

intent: Intent?不同intent: Intent?

對於每個綁定適配器,將 item 參數的類型更改為 nullable,並用

項目?.let{...}

谷歌文檔中的來源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM