MyThread.kt
class Article_thread:AsyncTask<String,Int,String>(){
lateinit var Myjson:container
override fun doInBackground(vararg p0: String?): String {
var MyUrl=p0[0]!!.toString()
var html=article_list_get(MyUrl)
var gson= Gson()
var Myjson=gson.fromJson(html, container::class.java)
this.Myjson=Myjson
return "finish"
}
fun article_list_get(MyUrl:String):String{
try{
val html:String= URL(MyUrl).readText()
return html
}
catch (e:Exception){
Log.v("error",e.toString())
}
return """null"""
fun get_title(position: Int): String {
var title=this.Myjson.result[position].article.title
return title
}
fun get_id(position: Int):String{
var id=this.Myjson.result[position].article.id
return id
}
fun setJson(json:container){
this.Myjson=json
}
}
data class container(val result:List<single>){}
data class single(val article:MyList){}
data class MyList(val title:String,val id:String){}
MainActivity.kt
fun tab_init(){
var mTab=findViewById<TabLayout>(R.id.mTablayout)
for(i in 0..20){
var n=mTab.newTab()
n.setText(i.toString())
mTab.addTab(n,i)
}
mTab.tabMode=TabLayout.MODE_SCROLLABLE
}
BUG/控制台错误
FATAL EXCEPTION: main Process: com.example.frank.myapplication, PID: 10744
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.frank.myapplication/com.example.frank.myapplication.article.activity_article}: kotlin.UninitializedPropertyAccessException: lateinit property Myjson has not been initialized
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3046)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1688)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6809)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: kotlin.UninitializedPropertyAccessException: lateinit property Myjson has not been initialized
at com.example.frank.myapplication.PrivateThread.Article_thread.getMyjson(Article_thread.kt:16)
总结这个错误就是说我的MyJson变量没有初始化。。该怎么修改呢?
主要原因还是因为我的线程内进行了ui操作,同时还在主线程,好了,问题结束