簡體   English   中英

嘗試從 Kotlin 中的另一個活動訪問 EditText 時出現空指針異常

[英]Null-Pointer Exception when trying to access an EditText from another activity in Kotlin

編輯:通過使用startActivityForResult()解決

在 Kotlin 中,我試圖從條形碼掃描活動的 HandleResult 方法中設置我的主要活動的 EditText 的內容,並且我得到了一個 NPE。 我已閱讀https://kotlinlang.org/docs/tutorials/android-plugin.html

這是條碼掃描活動

import kotlinx.android.synthetic.main.activity_main.*

...

override fun handleResult(rawResult: Result) {
    Toast.makeText(this, "Contents = " + rawResult.text +
            ", Format = " + rawResult.barcodeFormat.toString(), Toast.LENGTH_SHORT).show()
    doAsync {
        val url = "https://www.amazon.com/s/field-keywords=${rawResult.text}"
        val dom = Jsoup.connect(url).get()
        val title = dom.select("h2[class^=a-size-medium]")
        onComplete {
            txt_keyword.setText(title[0].text()) // <--- NPE crash
            onBackPressed()
        }
    }

我得到的崩潰是

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference
    at <mypackagename>.ScanActivity$handleResult$1$1.invoke(ScanActivity.kt:56)
    at <mypackagename>.ScanActivity$handleResult$1$1.invoke(ScanActivity.kt:20)
    at org.jetbrains.anko.AsyncKt$onComplete$1.run(Async.kt:57)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6940)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

Ctrl+Entering on "txt_keyword" 時,我確實跳轉到了 activity_main.xml 的相關部分!

在android中,你不應該從另一個活動訪問一個活動的內容,你應該做的是在主活動中使用handleResult()方法並使用startActivityForResult()啟動條形碼活動然后處理來自主活動的結果或者您可以通過 帶有捆綁包意圖將編輯文本的內容從主活動傳遞到條形碼活動 然后在條形碼活動中處理結果。

暫無
暫無

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

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