通过视图绑定功能,您可以更轻松地编写可与视图交互的代码。在模块中启用视图绑定之后,系统会为该模块中的每个 XML 布局文件生成一个绑定类。绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。
在大多数情况下,视图绑定会替代 findViewById。
视图绑定功能启用。需将 viewBinding 元素添加到其 build.gradle 文件中,如下例所示:
viewBinding {
enabled = true
}
import com.example.demo.databinding.ActivityMainBinding;
// 声明binding用于视图绑定功能
private ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 使用binding视图绑定功能
/*
* 通过视图绑定功能,您可以更轻松地编写可与视图交互的代码。在模块中启用视图绑定之后,系统会为该模块中的每个 XML 布局文件生成一个绑定类。
* 绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。
* */
// 初始化binding
binding = ActivityMainBinding.inflate(getLayoutInflater());
View view = binding.getRoot();
setContentView(view);
}
使用视图绑定功能引用控件,如:
binding.bottomNavigationViewMain
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 使用binding视图绑定功能
/*
* 通过视图绑定功能,您可以更轻松地编写可与视图交互的代码。在模块中启用视图绑定之后,系统会为该模块中的每个 XML 布局文件生成一个绑定类。
* 绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。
* */
// 初始化binding
binding = ActivityMainBinding.inflate(getLayoutInflater());
View view = binding.getRoot();
setContentView(view);
//使用视图绑定引用控件bottomNavigationViewMain
// 为bottomNavigationViewMain设置监听事件setOnNavigationItemSelectedListener,onNavigationItemSelected,用于改变viewPager2Main的CurrentItem
binding.bottomNavigationViewMain.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@SuppressLint("NonConstantResourceId")
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
return false;
}
});
}
与在Activity中使用视图绑定(binding)的步骤一相同
import com.example.demo.databinding.FragmentLoginBinding;
// 声明Binding对象
private FragmentLoginBinding binding;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
//使用binding视图绑定功能
/*
* 通过视图绑定功能,您可以更轻松地编写可与视图交互的代码。在模块中启用视图绑定之后,系统会为该模块中的每个 XML 布局文件生成一个绑定类。
* 绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。
* */
binding = FragmentLoginBinding.inflate(inflater, container, false);
View view = binding.getRoot();
return view;
}
使用视图绑定功能引用控件,如:
binding.buttonLoginLogin
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
//使用binding视图绑定功能
/*
* 通过视图绑定功能,您可以更轻松地编写可与视图交互的代码。在模块中启用视图绑定之后,系统会为该模块中的每个 XML 布局文件生成一个绑定类。
* 绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。
* */
binding = FragmentLoginBinding.inflate(inflater, container, false);
View view = binding.getRoot();
binding.buttonLoginLogin.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_loginFragment_to_mainActivity, null));
return view;
}
https://developer.android.google.cn/topic/libraries/view-binding
本文档为博主自主学习Android应用开发过程中的经验总结与心得体会,希望能在读者的学习道路上帮上一点点小忙,共同学习,共同成长。
欢迎读者评论留言,点赞,收藏,分享!