初始代码:
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
val datas = arrayOf("张三","李四","王五","麻子","小强")
var adapter: ArrayAdapter<String>? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
adapter = ArrayAdapter<String>(this,R.layout.layout_fruit_unit,datas)
binding.root.ll1.adapter = adapter
}
}
报错:Caused by: kotlin.UninitializedPropertyAccessException: lateinit property binding has not been initialized
给我的感觉是这个binding没有被初始化,查了查web以为是setContentView用的还是R.layout
改1:失败
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
val datas = arrayOf("张三","李四","王五","麻子","小强")
var adapter: ArrayAdapter<String>? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
adapter = ArrayAdapter<String>(this,R.layout.layout_fruit_unit,datas)
binding.root.ll1.adapter = adapter
}
}
再看了看前辈的代码
改2:失败(逐渐变得离谱)
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
val datas = arrayOf("张三","李四","王五","麻子","小强")
var adapter: ArrayAdapter<String>? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
adapter = ArrayAdapter<String>(this,R.layout.layout_fruit_unit,datas)
binding = ActivityMainBinding.inflate(LayoutInflater.from(this),ll1,false)
binding.root.ll1.adapter = adapter
}
}
之后看到了一篇overflow上的,感觉缺了类似这种的东西。
binding = DataBindingUtil.setContentView(this, R.layout.activity_quiz_question)
https://stackoverflow.com/questions/68558065/kotlin-lateinit-property-binding-has-not-been-initialized
感觉有戏
…10 min later…
我没有DataBingUtil,和这个人一样找不到呢…
只好一会儿问问师父了,让我先把昨天layout的问题做完。
改3:显示出来了
中午睡了个午觉,换了换脑子
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
val datas = arrayOf("张三","李四","王五","麻子","小强")
var adapter: ArrayAdapter<String>? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.root.ll1.adapter = adapter
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)