IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android的视图绑定 -> 正文阅读

[移动开发]Android的视图绑定

使用kotlin编写Android项目时可以用kotlin合成进行视图绑定,但升级到Android Studio4.1以后,发现项目中不能直接通过控件名称引用视图了,当时还不清楚原因,只是发现gradle文件中没有添加kotlin扩展库,添加kotlin扩展库就可以像原来一样直接引用控件。
今天创建了一个新的Android App,像往常一样在gradle文件中添加了kotlin扩展库。Build时发现Build Output窗口中有一行提示,表示kotlin合成已经被弃用,应该使用JetPack的视图绑定(View Binding)来替代,并给出了相应的网址。考虑到国内打不开developer.android.com这个网址(其实可以用developer.andoid.google.cn代替),还是把步骤写在这里。

  1. 创建新项目后,在gradle(app)文件中加入
android {
        ...
        viewBinding {
            enabled = true
        }
    }
  1. 在每个Activity中声明一个绑定类变量。绑定类是系统自动为Activity布局文件生成的,生成的类名规则是:将 XML 文件的名称转换为驼峰式大小写,并在末尾添加“Binding”一词。比如MainActivity的布局文件为activity_main.xml,绑定类就是ActivityMainBinding。
     private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)
    }

然后就可以使用binding.控件名称的方式来引用视图了,如:

binding.textViewName.text = "test"
binding.button.setOnClickListener{
	……
}

在Fragement中使用视图绑定也是差不多的,直接把官网的代码贴到这里:

private var _binding: ResultProfileBinding? = null
    // This property is only valid between onCreateView and
    // onDestroyView.
    private val binding get() = _binding!!

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        _binding = ResultProfileBinding.inflate(inflater, container, false)
        val view = binding.root
        return view
    }

    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
    }

要注意的是,Fragment 的存在时间比其视图长。请务必在 Fragment 的 onDestroyView() 方法中清除对绑定类实例的所有引用。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章           查看所有文章
加:2021-07-28 13:27:05  更:2021-07-28 13:27:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 5:35:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码