使用kotlin-android-extensions发现被放弃了。要用ViewBinding,一些小问题记录一下。
先在model中的build.gradle中的android加上
viewBinding { enabled = true }
或者是
buildFeatures { viewBinding true }
但是这个要在buildiTypes前面,不然会有问题,而且这种方法不是官方提到的,是我搜到的,不知道有什么区别,现在懒得去理。
使用的时候最好要放在全局定义,然后在onCreate的时候初始化 ,Binding类的命名规则是将布局文件按驼峰方式重命名后,再加上Binding作为结尾
private lateinit var binding: viewModelBinding override fun onCreate(savedInstanceState: Bundle) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) binding = viewModelBinding.inflate(layoutInflater) binding.name.setOnClickListener{ //这里就可以正常使用了 } }
但是在学习自定义控件,使用方法要变成
private lateinit var binding: TitleBinding init { LayoutInflater.from(context).inflate(R.layout.title, this) val root = View.inflate(context, R.layout.title, this) binding = TitleBinding.bind(root) binding.titleBack.setOnClickListener { val activity=context as Activity activity.finish() } binding.titleEdit.setOnClickListener { Toast.makeText(context, "you clicked", Toast.LENGTH_SHORT).show() } }
暂时感觉到是因为自定义控件没有layoutInflater这东西,具体的后面遇上在深究