Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从数组列表获取数据时,lateinit属性尚未初始化_Android_Kotlin_Retrofit - Fatal编程技术网

Android 从数组列表获取数据时,lateinit属性尚未初始化

Android 从数组列表获取数据时,lateinit属性尚未初始化,android,kotlin,retrofit,Android,Kotlin,Retrofit,我想从arraylist数据中获得第一个索引,这是我使用改型从API中获得的 c lass BeritaActivity : AppCompatActivity() { var listData : ArrayList<Berita> = ArrayList() lateinit var adapter: BeritaAdapter lateinit var image_headline: String lateinit var judul_he

我想从arraylist数据中获得第一个索引,这是我使用改型从API中获得的

c

lass BeritaActivity : AppCompatActivity() {

    var listData : ArrayList<Berita> = ArrayList()
    lateinit var adapter: BeritaAdapter

    lateinit var image_headline: String
    lateinit var judul_headline: String

    companion object {
        const val JUDUL = "judul"
        const val BERITA = "berita"
        const val IMAGE = "image"
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_berita)



        recycler_berita.setHasFixedSize(true)
        recycler_berita.layoutManager = LinearLayoutManager(applicationContext)

        ApiService.create()
            .getBerita()
            .enqueue(object : retrofit2.Callback<List<Berita>>{
                override fun onFailure(call: Call<List<Berita>>, t: Throwable) {
                    toast(t.message.toString())
                }

                override fun onResponse(
                    call: Call<List<Berita>>,
                    response: Response<List<Berita>>
                ) {
                    listData.addAll(response.body() as ArrayList<Berita>)
                    judul_headline = listData[0].namaKegiatan.toString()
                    image_headline = listData[0].foto.toString()
                    Log.d("Headline Judul",judul_headline)
                    Log.d("Headline Photo",image_headline)
                    adapter = BeritaAdapter(listData, this@BeritaActivity){
                        startActivity<DetailBeritaActivity>(
                            JUDUL to it.namaKegiatan,
                            BERITA to it.deskripsiKegiatan,
                            IMAGE to it.foto
                        )
                    }

                    recycler_berita.adapter = adapter
                }

            })


        judul_headline_berita.text =  judul_headline
        Glide.with(this)
            .load("https://tahfidzta.doaqu.or.id/kegiatan/"+image_headline)
            .into(image_headline_berita)
    }
}
c
类BeritaActivity:AppCompatActivity(){
var listData:ArrayList=ArrayList()
lateinit变量适配器:BeritaAdapter
lateinit变量图像标题:字符串
lateinit var judul_标题:字符串
伴星{
const val JUDUL=“JUDUL”
const val BERITA=“BERITA”
const val IMAGE=“图像”
}
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_berita)
回收商_berita.setHasFixedSize(真)
回收器\u berita.layoutManager=LinearLayoutManager(applicationContext)
ApiService.create()
.getBerita()
.enqueue(对象:2.Callback{
覆盖失效时的乐趣(调用:调用,t:可丢弃){
toast(t.message.toString())
}
覆盖响应(
呼叫:呼叫,,
答复:答复
) {
listData.addAll(response.body()作为ArrayList)
judul_headline=listData[0]。namaKegiatan.toString()
image\u headline=listData[0]。foto.toString()
Log.d(“标题Judul”,Judul_标题)
Log.d(“标题照片”,图片标题)
adapter=BeritaAdapter(listData,this@BeritaActivity){
星触觉(
朱杜尔说,纳马基亚坦,
贝丽塔,去吧,
想象一下吧
)
}
回收器\u berita.adapter=适配器
}
})
judul_headline_berita.text=judul_headline
用(这个)滑翔
.加载(“https://tahfidzta.doaqu.or.id/kegiatan/“+图片(标题)
.into(图片标题)
}
}
我犯了这个错误

2020-05-21 21:10:31.309 1726-1726/com.thor.prototype E/AndroidRuntime:致命异常:主 流程:com.thor.prototype,PID:1726 java.lang.RuntimeException:无法启动活动组件信息{com.thor.prototype/com.thor.doaqu.BeritaActivity}:kotlin.UninitializedPropertyAccessException:lateinit属性judul_headline尚未初始化 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946)上 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081) 在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)中 在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)中 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831) 位于android.os.Handler.dispatchMessage(Handler.java:106) 位于android.os.Looper.loop(Looper.java:201) 位于android.app.ActivityThread.main(ActivityThread.java:6810) 位于java.lang.reflect.Method.invoke(本机方法) 位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873) 原因:kotlin.UninitializedPropertyAccessException:lateinit属性judul_headline尚未初始化 在com.thor.doaqu.BeritaActivity.onCreate上(BeritaActivity.kt:74) 位于android.app.Activity.performCreate(Activity.java:7224) 位于android.app.Activity.performCreate(Activity.java:7213) 位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2926)上 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081) 在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)中 在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)中 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831) 位于android.os.Handler.dispatchMessage(Handler.java:106) 位于android.os.Looper.loop(Looper.java:201) 位于android.app.ActivityThread.main(ActivityThread.java:6810) 位于java.lang.reflect.Method.invoke(本机方法) 位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

我不知道有什么问题,请帮帮我
谢谢

您应该在
onCreate
函数中初始化
lateinit
变量,或者使用
lazy
。请看这里:

您可以轻松地使用,而不是

lateinit var image_headline: String
    lateinit var judul_headline: String
这条线

  var image_headline=""
   var judul_headline=""

您应该在
onCreate
函数中或使用
lazy
初始化
lateinit
变量。请看这里:

您可以轻松地使用,而不是

lateinit var image_headline: String
    lateinit var judul_headline: String
这条线

  var image_headline=""
   var judul_headline=""

这是因为
enqueue()
异步工作。这意味着这一组代码

judul_headline_berita.text =  judul_headline
Glide.with(this)
    .load("https://tahfidzta.doaqu.or.id/kegiatan/"+image_headline)
    .into(image_headline_berita)
将首先执行,此处未初始化
image\u headline
。 因此,解决方案是:

 override fun onResponse(
                call: Call<List<Berita>>,
                response: Response<List<Berita>>
            ) {
                listData.addAll(response.body() as ArrayList<Berita>)
                judul_headline = listData[0].namaKegiatan.toString()
                image_headline = listData[0].foto.toString()
                Log.d("Headline Judul",judul_headline)
                Log.d("Headline Photo",image_headline)
                adapter = BeritaAdapter(listData, this@BeritaActivity){
                    startActivity<DetailBeritaActivity>(
                        JUDUL to it.namaKegiatan,
                        BERITA to it.deskripsiKegiatan,
                        IMAGE to it.foto
                    )
                }

                recycler_berita.adapter = adapter

                judul_headline_berita.text =  judul_headline
                Glide.with(this)
               .load("https://tahfidzta.doaqu.or.id/kegiatan/"+image_headline)
               .into(image_headline_berita)
            }
override-onResponse(
呼叫:呼叫,,
答复:答复
) {
listData.addAll(response.body()作为ArrayList)
judul_headline=listData[0]。namaKegiatan.toString()
image\u headline=listData[0]。foto.toString()
Log.d(“标题Judul”,Judul_标题)
Log.d(“标题照片”,图片标题)
适配器=BeritaAdapt