簡體   English   中英

指定為非空Kotlin的參數

[英]Parameter specified as non-null kotlin

我有Java代碼,並且我更改為kotlin,我的代碼用於通過使用pdf-viewer庫顯示pdf,但我不明白為什么我的代碼有錯誤並出現以下錯誤:

指定為非null的是null參數:方法kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,inputStream參數

這是我的代碼

    package pdfviewer.pdfviewer

import android.annotation.SuppressLint
import android.app.Activity
import android.os.AsyncTask
import android.os.Bundle
import com.github.barteksc.pdfviewer.PDFView
import java.io.BufferedInputStream
import java.io.IOException
import java.io.InputStream
import java.net.HttpURLConnection
import java.net.MalformedURLException
import java.net.URL

class PdfRender : Activity() {

lateinit var pdfView: PDFView

override fun onCreate( savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.pdf_render)
}

@SuppressLint("StaticFieldLeak")
inner class DownloadPdf : AsyncTask<String, Void, InputStream>() {

    override fun doInBackground(vararg strings: String): InputStream? {
        var inputStream: InputStream? = null
        try {
            val uri = URL(strings[0])
            val urlConnection = uri.openConnection() as HttpURLConnection
            if (urlConnection.responseCode == 200) {
                inputStream = BufferedInputStream(urlConnection.inputStream)
            }
        } catch (e: MalformedURLException) {
            e.printStackTrace()
        } catch (e: IOException) {
            e.printStackTrace()
        }

        return inputStream
    }

    override fun onPostExecute(inputStream: InputStream) {
        pdfView.fromStream(inputStream).load()
    }
     }
    }

在某些情況下,inputStream為null。 當將該空值傳遞給onPostExecute時,由於您已將參數指定為非空,因此Kotlin內在方法會使用barfs。

Tl; dr:將onPostExecute更改為具有可為空的參數。

您在doInBackground()方法中返回的doInBackground()為空。 因此, onPostExecute()的參數應為可為空的類型。

onPostExecute(inputStream: InputStream)應該已經onPostExecute(inputStream: InputStream?)

暫無
暫無

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

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