IllegalArgumentException: Der als nicht null angegebene Parameter ist null

Lesezeit: 3 Minuten

Benutzer-Avatar
Ein Maharadscha

Ich bekomme folgendes Laufzeit Fehler:

 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)

Hier ist mein Code:

 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()
}

Es scheint, dass der Funktionsaufruf ungültig zu sein scheint. Allerdings weiß ich nicht, wie ich dieses Problem beheben kann. Gibt es etwas Kotlin-spezifisches, das ich übersehen habe?

  • Es gibt keine Frage. Bitte formulieren Sie eine, um Hilfe zu erhalten.

    – günhter

    3. Juli 2017 um 14:10 Uhr

Benutzer-Avatar
Alexander Romanow

Die Ausnahme ist ziemlich klar: Sie passieren null für den Parameter.

Standardmäßig sind alle Variablen und Parameter in Kotlin sind nicht null. Wenn du durchkommen willst null Parameter für die Methode, die Sie hinzufügen sollten ? zu seinem Typ, zum Beispiel:

fun fetchMerchantHashes(intent: Intent?)

Für mehr Informationen: Null-Sicherheit.

Benutzer-Avatar
CoolMind

In meinem Fall warnte dieser Fehler vor wahrscheinlich Übergeben einer Null als Parameter. Drei Möglichkeiten der Korrektur.

  1. Ändern Sie den Typ eines Parameters an der entsprechenden Stelle. Wenn es von Java empfangen wird, fügen Sie hinzu @NonNull Anmerkung zu einer Variablendefinition.
  2. Hinzufügen !! zu einem Argument der Methode.
  3. Hinzufügen ? zum Parameter in der Kotlin-Klasse. Ich denke, das Kotlin-Konvertierungstool könnte dies standardmäßig tun, wenn in der Java-Klasse keine Anmerkungen verwendet würden (wie @Nullable, @NonNull).

  • Fehler sind keine Warnungen und Warnungen sind keine Fehler. Hinzufügen !! kann eine NullPointerException verursachen, nur weil Sie zur Laufzeit behaupten, dass es nicht null ist, wenn es tatsächlich null ist.

    – esaspi

    2. April 2019 um 22:45 Uhr

  • @ezaspi, stimme dir zu. Ich füge ein hinzu ? Fall. In der Vergangenheit habe ich eingestellt !! um einen Absturz in der Laufzeit zu sehen, wo NPE passieren könnte.

    – CoolMind

    3. April 2019 um 7:16 Uhr

  • Wir haben gerade einen großen Android-zu-Kotlin-Refactor und diese lästigen !! waren schlimmer als mögliche Nullen, die zuvor existierten. Beispiel: Ein Aufruf der Methode abc(String somevalue) in Android wird in Kotlin (per Konverter) in abc(somevalue: String!!) umgewandelt. Vor der Konvertierung behandelte abc Nullen, wirft aber danach sofort ein NPE. Man mag argumentieren, dass wir ein @Nullable hätten haben sollen, aber es war ein großes Projekt und hat daher nicht alle erfasst. Und es braucht nur einen davon, um die App zum Absturz zu bringen.

    – esaspi

    3. April 2019 um 21:08 Uhr

  • Übrigens, wenn es nur unser Code wäre, wäre es nicht so schlimm. Aber viele Android-Überschreibungen haben keine @Nullable-Anmerkungen. Nachdem der Autokonverter fertig ist, kann der Code Folgendes enthalten: override fun onItemSelected(parentView: AdapterView<*>, selectedItemView: View, position: Int, id: Long) Aber es sollte eine nullable View sein? da dies oft abstürzt

    – esaspi

    3. April 2019 um 21:12 Uhr


  • @ezaspi, ich stimme dir vollkommen zu und stand auch oft vor diesen Problemen. Das ist ein Nachteil des Autokonverters. Entschuldigung, ich habe diese Antwort vor einem Jahr geschrieben, als ich anfing, Kotlin zu lernen.

    – CoolMind

    4. April 2019 um 6:51 Uhr

Benutzer-Avatar
Ambilpura Sunil Kumar

Einfache Antwort wird sicher funktionieren … Wenn Sie die Daten vom Server mit Rest Client (Webdienstaufrufe) (GET oder POST) abrufen und wenn die json-Antwort einen Null-Parameterwert enthalten könnte und Sie die Parameter und Anhängen an Textview erhalten Sie diesen Fehler.

Lösung:
einfach anhängen? Markieren Sie die Variable wie unten.

Beispiel:

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

Hier versuche ich, batchNo mit einem Serviceaufruf abzurufen.

Ich habe eine ähnliche Ausnahme nach dem Konvertieren einer Aktivität von Java in Kotlin mit dem Konvertierungstool von Android Studio festgestellt. Also, das habe ich override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent)

Es ist richtig override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)

Unterschied in intent: Intent?

Ändern Sie für jeden der Bindungsadapter den Typ des item-Arguments in nullable und umschließen Sie den Text mit

Artikel?.let{…}

Quelle in der Google-Dokumentation

1204730cookie-checkIllegalArgumentException: Der als nicht null angegebene Parameter ist null

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy