【问题标题】:java.lang.NullPointerException on non-null android view非空 android 视图上的 java.lang.NullPointerException
【发布时间】:2021-11-18 04:43:16
【问题描述】:

我正在尝试将一些 api 结果输入到 android studio 中的布局中,但是当它不是时,我在视图上得到一个 java.lang.NullPointerException。这是我的代码:

AsyncTask.execute {
    var related = gson.fromJson(AnibaseApi().getAnimeRelated(anime.id), Array<AnimeResponseObject>::class.java)

    println(related) // First sysyem.out

    for (r in related) {
        runOnUiThread {
            var elem = if (r.english != "") {
                AnimeVerticalObject(this).set(
                    r.english,
                    r.image
                ).build() // returns LinearLayout
            } else {
                AnimeVerticalObject(this).set(
                    r.title,
                    r.image
                ).build() // returns LinearLayout
            }
            println(elem) // second system.out
            relatedLayout.addView(elem!!) // Line 110

            var space = Space(this)
            space.layoutParams = LinearLayout.LayoutParams(
                10.toDp(),
                LinearLayout.LayoutParams.MATCH_PARENT
            )
            relatedLayout.addView(space)
        }
    }
}

注意Int.toDp() 返回一个Int。我的日志说视图不是空的,因为它可以在打印时看到。

I/System.out: [Lcom.my.package.utils.AnimeResponseObject;@4f30821 
I/System.out: android.widget.LinearLayout{8ee2334 V.E...... ......I. 0,0-0,0}
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.my.package, PID: 465
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.LinearLayout.addView(android.view.View)' on a null object reference
        at com.my.package.AnimeActivity2.onCreate$lambda-2$lambda-1(AnimeActivity2.kt:110)
        at com.my.package.AnimeActivity2.$r8$lambda$HrayXNmY3lD16wB92hio1CE3OxE(Unknown Source:0)
        at com.my.package.AnimeActivity2$$ExternalSyntheticLambda1.run(Unknown Source:4)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:250)
        at android.app.ActivityThread.main(ActivityThread.java:7851)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958)

所以现在,我不明白为什么,如果我的视图不为空(具有非空验证器),它仍然会引发此异常。有什么想法吗?

【问题讨论】:

  • relatedLayout 为空,而不是 elem

标签: java android kotlin asynchronous nullpointerexception


【解决方案1】:

您的 relatedlayout 尚未初始化,您正尝试在 null 上添加视图,这就是您收到此异常的原因。

像这样在onCreate()中初始化relatedLayout

relatedLayout=findViewById(R.id.your XML id)

【讨论】:

    猜你喜欢
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    相关资源
    最近更新 更多