你需要引入插件
请将 viewBinding 元素添加到其 build.gradle 文件中
apply plugin: 'com.android.application'apply plugin: 'kotlin-android'apply plugin: 'kotlin-android-extensions'android {compileSdkVersion 29buildToolsVersion "29.0.3"//视图绑定插件viewBinding {enabled = true}defaultConfig {applicationId "com.example.viewbinding"minSdkVersion 16targetSdkVersion 29versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}}dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"implementation 'androidx.appcompat:appcompat:1.1.0'implementation 'androidx.core:core-ktx:1.2.0'implementation 'androidx.constraintlayout:constraintlayout:1.1.3'testImplementation 'junit:junit:4.12'androidTestImplementation 'androidx.test.ext:junit:1.1.1'androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'}
第一种情况在Activit中使用
package com.example.viewbindingimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.os.PersistableBundleimport com.example.viewbinding.databinding.ActivityMainBindingclass MainActivity : AppCompatActivity() {// 声明变量private lateinit var binding: ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)// 接入插件binding = ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)}override fun onStart() {super.onStart()// 视图绑定binding.tit1.text = "activity视图绑定"// 事件绑定binding.button.setOnClickListener({binding.tit1.text = "事件绑定"})}}
在Fragment中使用
package com.example.viewbinding
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.example.viewbinding.databinding.FragmentBlankBinding
/**
* A simple [Fragment] subclass.
*/
class BlankFragment : Fragment() {
private lateinit var binding: FragmentBlankBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
binding = FragmentBlankBinding.inflate(layoutInflater)
return binding.root
// return inflater.inflate(R.layout.fragment_blank, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// 视图绑定
binding.textView.text = "Fragment视图数据绑定"
// 事件绑定
binding.button2.setOnClickListener({
binding.textView.text = "fragment中事件绑定"
})
}
}
结语
后面的findViewById不用看,也不用学了。视图绑定是比较好的了
