非空 android 视图上的 java.lang.NullPointerException
Posted
技术标签:
【中文标题】非空 android 视图上的 java.lang.NullPointerException【英文标题】:java.lang.NullPointerException on non-null android view 【发布时间】: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.LinearLayout8ee2334 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
。
【参考方案1】:
您的 relatedlayout
尚未初始化,您正尝试在 null
上添加视图,这就是您收到此异常的原因。
像这样在onCreate()
中初始化relatedLayout
relatedLayout=findViewById(R.id.your XML id)
【讨论】:
以上是关于非空 android 视图上的 java.lang.NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章
WindowManager 添加的视图上的 ViewPager 获取“java.lang.IllegalArgumentException:找不到 id 的视图”
java.lang.IllegalArgumentException:没有为片段的 id 0x1020002 (android:id/content) 找到视图
Android 4.4.2 上的异常“java.lang.ClassNotFoundException:找不到类...”
获取 android 房间数据库 java.lang.IllegalArgumentException 的以下异常:@androidx.room.Database 未定义元素视图()
java.lang.IllegalStateException:不是标准目录之一:Android 10 上的 /storage/emulated/0/Download/
java.lang.RuntimeException:处理程序(android.os.Handler)向死线程上的处理程序发送消息