Android Studio又更新了,已经废弃kotlin-android-extensions啦
官方资料:
https://developer.android.com/topic/libraries/view-binding?hl=zh-cn
下面是我自己使用的经验:
基于的Android Studio版本是:
- help/About
app/build.gradle文件中加入下面代码:
android {
...
viewBinding {
enabled = true
}
}
如下图所示:
然后重新build一下Ctrl+F9,会在下面路径中生成一个layout资源的binding类:
FirstLayoutBinding
对应的layout资源是:
first_layout.xml
public final class FirstLayoutBinding implements ViewBinding {
@NonNull
private final LinearLayout rootView;
@NonNull
public final Button button1; // 在前面first_layout中添加了一个id为button1的按钮
private FirstLayoutBinding(@NonNull LinearLayout rootView, @NonNull Button button1) {
this.rootView = rootView;
this.button1 = button1;
}
//....
}
在Actitivy中使用:
import com.example.activitytest.databinding.FirstLayoutBinding // 这里要把上面自动生成的类引用进来
private lateinit var binding: FirstLayoutBinding // 声明一个全局binding
class FirstActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 调用生成的绑定类中包含的静态 inflate() 方法。
// 此操作会创建该绑定类的实例以供 Activity 使用
binding = FirstLayoutBinding.inflate(layoutInflater)
// 通过调用 getRoot() 方法或使用 Kotlin 属性语法获取对根视图的引用。
val view = binding.root
// 将根视图传递到 setContentView(),使其成为屏幕上的活动视图。
setContentView(view)
// 直接使用binding中的资源
binding.button1.setOnClickListener {
Toast.makeText(this, "You clicked Button 1", Toast.LENGTH_SHORT).show()
}
}
}