当前位置: 首页 > news >正文

[Android]使用View Binding 替代findViewById

1.配置

build.gradle文件中添加配置,然后同步。

android {...buildFeatures {viewBinding true}
}

2.用 View Binding 类来访问布局中的视图

在Activity代码的顶部导入生成的 View Binding 类:

import com.example.yourapp.databinding.ActivityMainBinding

在活动类中创建一个 View Binding 对象,并使用 inflate方法获取绑定的视图:

private lateinit var binding: ActivityMainBinding

在活动的 onCreate 方法中,使用 setContentView 方法设置活动的视图,并使用 View Binding 对象获取根视图:

override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)// 现在您可以使用 binding 对象访问布局中的视图binding.textView.text = "Hello, World!"
}

3. 在Fragment中使用View Binding

在Fragment中,你可以在onCreateView中使用View Binding:

class MainFragment : Fragment() {private var _binding: FragmentMainBinding? = nullprivate val binding get() = _binding!!override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,savedInstanceState: Bundle?): View? {_binding = FragmentMainBinding.inflate(inflater, container, false)return binding.root}override fun onViewCreated(view: View, savedInstanceState: Bundle?) {super.onViewCreated(view, savedInstanceState)binding.someView.text = "Hello, World!"}override fun onDestroyView() {super.onDestroyView()_binding = null}
}

在Fragment中,我们需要在onDestroyView中设置_binding为null,这是因为视图可能在Fragment销毁之前就被销毁了,所以我们需要避免在Fragment和视图之间产生内存泄漏。

4.忽略View Binding

如果布局文件不需要生成绑定类,可以将 tools:viewBindingIgnore="true" 属性添加到该布局文件的根视图中:

<LinearLayout...tools:viewBindingIgnore="true" >
</LinearLayout>

http://www.lryc.cn/news/232458.html

相关文章:

  • Pytest UI自动化测试实战实例
  • 软件测试/测试开发丨接口自动化测试学习笔记,多环境自动切换
  • Spring-IoC与DI入门案例
  • windows虚拟内存自定义分配以及mysql错误:Row size too large (> 8126)
  • 自动备份pgsql数据库
  • networkx使用draw画图报错:TypeError: ‘_AxesStack‘ object is not callable
  • tcpdump 常用命令
  • Linux 下安装 Maven 3.8.8【详细步骤】
  • 报错资源不足,k8s使用containerd运行容器修改挂载点根目录换成/home
  • JS代码其实可以这样写
  • day14-文件系统工作流程分析
  • kubectl 常用命令搜集 —— 筑梦之路
  • 计算3D目标框的NMS
  • 【Java实现图书管理系统】
  • ROS 多机器人导航RVIZ环境的配置
  • UE4 / UE5 内存与性能优化
  • dotnet core程序部署到ubuntu
  • Antv/G2 柱状图添加自定义点击事件
  • Python---数据序列中的公共方法
  • 从0开始python学习-33.夹具@pytest.fixture(scope=““,params=““,autouse=““,ids=““,name=““)
  • vue3别名配置(vite)
  • 初学UE5 C++①
  • ElasticSearch6.8.1 常见错误
  • wx.canvasToTempFilePath生成图片保存到相册
  • HDU1276:士兵队列训练问题 ← STL queue
  • JS 读取excel文件内容 和 将json数据导出excel文件
  • ASP.NET限流器的简单实现
  • 汇编语言循环左移和循环右移如何实现的,详细的比喻一下
  • ChromeDriver 各版本下载地址
  • 计算机网络之物理层