【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )(二)

IV . 视图绑定 ( ViewBinding ) 关联 Activity 界面


1 . 两种获取组件方式 : 上面的示例代码中 , 分别使用 findViewById(R.id.text_view) 获取的组件 和 ActivityMainBinding 获取组件 ; 但是使用 ActivityMainBinding 获取组件无法修改界面 ;



2 . ActivityMainBinding 获取的组件无法控制界面 , 这是因为该 ActivityMainBinding 视图绑定类 , 并没有与 Activity 关联 ;



3 . 界面布局分析 : 设置界面布局的代码是 setContentView(R.layout.activity_main) , 此处将 activity_main.xml 布局设置给了 Activity 显示 , 该布局的视图组件与 ActivityMainBinding 没有任何关联 , Activity 显示的组件也不是 ActivityMainBinding 绑定类中的组件 , 因此操作视图绑定类中的组件不能修改 Activity 界面的显示 ;



4 . 如果要显示需要将 ActivityMainBinding 根视图设置给 Activity 显示 , 进行如下操作 ;


/*
    获取 视图绑定 对象
    生成绑定类 : 需要传递 LayoutInflater 参数 ,
        可以直接调用 Activity 的 getLayoutInflater() 方法获取
 */
ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());
/*
    ActivityMainBinding 绑定类自带 getRoot() 方法
        可以直接获取到 布局文件的 根视图
    这里可以直接将根视图传递给 setContentView 函数作为参数 , 即可在该 Activity 中显示该布局
 */
setContentView(binding.getRoot());



5 . 关联界面操作 : setContentView(binding.getRoot()) 操作就是将视图绑定类与 Activity 界面关联了起来 , 此时操作视图绑定类就可以修改界面内容了 ;




V . 视图绑定 ( ViewBinding ) 本质分析


视图绑定 ( ViewBinding ) 其本质就是提供了一种加载布局文件的便捷方式 , 与下面的操作本质是类似的 , 只是可以省略很多代码 ;



① 布局加载操作 :


//加载布局文件
View view = LayoutInflater.from(context)
    .inflate(R.layout.activity_main, parent, false);
//查找布局文件中的组件
TextView textView = view.findViewById(R.id.text_view);



② 视图绑定操作 :


ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());
TextView textView = binding.textView;




VI . GitHub 代码地址


GitHub 代码地址 : https://github.com/han1202012/002_JetPack_ViewBinding_Apply


上一篇:Windows7使用技巧之PowerShell应用


下一篇:VC项目配置基础 .