2017-10-25 9 views
0

TextView親レイアウトを膨張させた後のNull。 私は、これらのレイアウトの数を膨張させるループを実行している: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")) 
} 

STACKTRACE

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) 
+0

私の答えを試してみて、それが動作するかどうかを確認するために、バグとして報告しました。 – Mauker

答えて

1

あなたはあなたのコード内のどこにもfindViewById()を使用していません。代わりに行うので:

var thetitle = infv.findViewById(R.id.tck_event_title) as TextView 

または使用しようとしているTextViewその同等ID:

var thetitle = infv.tck_event_title 

ことは、これを試してみてください。

さらに、各ループに新しいLayoutInflaterを作成しています。このコード行:

var inf1:LayoutInflater = LayoutInflater.from(context) 

は本当に、ループの外であるべき(とにも代わりvarvalすることができます)。

編集: Kotlin Android拡張機能を使用する場合は、this answerにチェックを入れることをおすすめします。何かを輸入することを忘れてしまったかもしれません。

+0

何が起こったのは、Android Studioが私のカスタムレイアウト名を一般的なTextview7/8などに戻したことです.GUIにカスタム名が表示されていましたが、背後にあるXMLには一般名が表示されていました。開発者にバグとして報告しました – BostonMacOSX

+0

ああ、私は参照してください。あなたは実際にKotlin Android拡張機能を使用していました。あなたがそれを理解したことを知ってうれしいです:)(しかし、ループの外にインフレータを作成することを忘れないでください!) – Mauker

+0

はい私はそうでした。私はちょうど数週間前に開発を学び始めたので、私はKotlin – BostonMacOSX

0

実際にはありませんし、他の答えは、元のコードが動作します。

Androidスタジオが私のカスタムレイアウト名を一般的なTextview7/8などに戻したということです.GUIにカスタム名が表示されましたが、背後にあるXMLには一般名が表示されていました。開発者

関連する問題