在充气父布局后TextView Null

时间:2017-10-25 13:23:24

标签: android layout kotlin layout-inflater

在膨胀父布局后

TextView Null。 我正在运行一个循环,它会使这些布局膨胀:

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)

2 个答案:

答案 0 :(得分:1)

您未在代码中的任何位置使用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 Extensions,我建议您检查this answer。您可能已经忘记了导入某些内容。

答案 1 :(得分:0)

不是真的然后回答其他原始代码确实有效。

发生的事情是Android Studio将我的自定义布局名称还原为通用Textview7 / 8等.GUI显示了我的自定义名称,但幕后的XML显示了通用名称。将其报告为开发人员的错误