TextView 膨胀父布局后为空。我正在运行一个循环,该循环膨胀了许多这些布局:
for(i in ticketAr?.indices!!){
var inf1:LayoutInflater = LayoutInflater.from(context)
var infv:View = inf1.inflate(R.layout.ticket_individual,null,false)
infv.setId(parseInt(ticketAr[i].string("ntb_id")))
var thetitle = infv.tck_event_title
thetitle.setText(ticketAr[i].string("age_group_desc"))
}
堆栈跟踪
10-25 09:30:35.839 11549-11549/com.example.xx.listview
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.xx.listview, PID: 11549
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at
com.example.xx.listview.Ordering_Setup$getData$1.invoke(Ordering_Setup.kt:145)
at
com.example.xx.listview.Ordering_Setup$getData$1.invoke(Ordering_Setup.kt:29)
at
com.github.kittinunf.fuel.core.DeserializableKt$response$1.invoke(Deserializable.kt:37)
at
com.github.kittinunf.fuel.core.DeserializableKt$response$1.invoke(Deserializable.kt)
at
com.github.kittinunf.fuel.core.DeserializableKt$response$5$1.invoke(Deserializable.kt:62)
at
com.github.kittinunf.fuel.core.DeserializableKt$response$5$1.invoke(Deserializable.kt)
at
com.github.kittinunf.fuel.core.Request$callback$1.run(Request.kt:225)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
没有在代码中的任何位置使用findViewById()
。而不是做:
var thetitle = infv.tck_event_title
试试这个:
var thetitle = infv.findViewById(R.id.tck_event_title) as TextView
或者您尝试使用的TextView
的等效 ID。
此外,您还将在每个循环上创建一个新LayoutInflater
。这行代码:
var inf1:LayoutInflater = LayoutInflater.from(context)
真的应该在循环之外(甚至可以是val
而不是var
)。
编辑:如果您尝试使用Kotlin Android扩展,我建议您检查此答案。你可能忘了导入一些东西。
不是真的,回答其他,然后原始代码确实有效。
发生的事情是Android Studio将我的自定义布局名称恢复为通用的Textview7/8等。GUI 显示我的自定义名称,但后台的 XML 显示通用名称。将其作为错误报告给开发人员