私は次の実行時エラーを取得しています:
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()
}
関数呼び出しは無効のようです。ただし、この問題を解決する方法がわかりません。私が見逃したコトリン固有のものはありますか?
例外はかなり明確です。パラメーターにnull
を渡します。
デフォルトでは、Kotlinのすべての変数とパラメーターは非ヌルです。メソッドにnull
パラメーターを渡したい場合は、そのタイプに?
を追加する必要があります。次に例を示します。
fun fetchMerchantHashes(intent: Intent?)
詳細情報: null-safety 。
私の場合、このエラーはprobable nullをパラメーターとして渡すことについて警告していました。修正の3つの方法。
@NonNull
アノテーションを変数定義に追加します。!!
をメソッドの引数に追加します。?
をKotlinクラスのパラメーターに追加します。 Javaクラスで注釈が使用されていない場合(@Nullable
、@NonNull
など)、Kotlin変換ツールはデフォルトでこれを行う可能性があると思います。Java Studio変換ツールを使用して、アクティビティをAndroidからKotlinに変換した後、同様の例外をキャッチしました。だから、override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent)
を得たのです
そうですoverride fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)
intent: Intent?
の違い
単純な答えは確かに機能します... Rest Client(Web Services呼び出し)(GETまたはPOST)を使用してサーバーからデータをフェッチし、json応答にnullパラメーター値がある可能性があり、パラメータとtextviewに追加すると、このエラーが発生します。
解決策:単に追加しますか?以下のように変数にマークします。
例:
var batchNo: String? = "" (Correct Approach)
var batchNo= "" (Will Get Error)
ここでは、サービスコールを使用してbatchNoを取得しようとしています。