- Kotlin优化了复杂界面大段大段的findViewById代码,取而代之的是导包形式:
import kotlinx.android.synthetic.main.布局文件.*
之后直接根据控件的ID获取控件对象,如:
<Button
android:id="@+id/QRCode"
android:text="QRCode"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
直接调用,不需要额外的代码
QRCode.setOnClickListener(this)
大概是在Kotlin1.3.2版本以前,当一个xml文件中include其他xml文件时,通过将子xml文件import进去,也可以直接根据id获得控件对象。当我更新到1.3.2版本后,根据id得到的控件并不是界面显示的那个对象,使用时就会报KotlinNullPointException。
通过给include的xml添加id
<include
android:id="@+id/mLayout_home_to_audit_info"
layout="@layout/item_home_today_info" />
在父view中findViewById获取子view对象(fragment中)
private fun initView() {
mLayout_home_to_audit_info = root!!.findViewById(R.id.mLayout_home_to_audit_info)
}
之后使用中才不会空指针异常
Layout_home_to_audit_info!!.visibility = View.GONE `