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

android studio 里的 activity 和 layout 是怎么关联上的

在 Android Studio 中,Activity 和 Layout 的关联是通过 setContentView() 方法建立的。让我详细解释一下这个过程:

1. 基本关联方式

在 Activity 中设置布局

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 关联布局文件setContentView(R.layout.activity_main);}
}

2. 关联的详细过程

布局文件 (XML)

<!-- res/layout/activity_main.xml -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!" /><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Click Me" />
</LinearLayout>

Activity 代码

public class MainActivity extends AppCompatActivity {private TextView textView;private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 关键步骤:将 XML 布局文件与 Activity 关联setContentView(R.layout.activity_main);// 初始化视图组件initializeViews();}private void initializeViews() {// 通过 findViewById 获取布局中的视图textView = findViewById(R.id.textView);button = findViewById(R.id.button);// 设置点击事件button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {textView.setText("Button Clicked!");}});}
}

3. 使用 ViewBinding(推荐方式)

启用 ViewBinding

app/build.gradle 中:

android {buildFeatures {viewBinding true}
}

使用 ViewBinding 关联

public class MainActivity extends AppCompatActivity {private ActivityMainBinding binding;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 使用 ViewBinding 关联布局binding = ActivityMainBinding.inflate(getLayoutInflater());setContentView(binding.getRoot());// 直接通过 binding 对象访问视图binding.textView.setText("Hello ViewBinding!");binding.button.setOnClickListener(v -> {binding.textView.setText("Button Clicked with ViewBinding!");});}
}

4. 使用 DataBinding

启用 DataBinding

app/build.gradle 中:

android {buildFeatures {dataBinding true}
}

使用 DataBinding 关联

<!-- 布局文件需要包裹在 <layout> 标签中 -->
<layout xmlns:android="http://schemas.android.com/apk/res/android"><data><variablename="viewModel"type="com.example.MainViewModel" /></data><LinearLayout><!-- 布局内容 --></LinearLayout>
</layout>
public class MainActivity extends AppCompatActivity {private ActivityMainBinding binding;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 使用 DataBinding 关联布局binding = DataBindingUtil.setContentView(this, R.layout.activity_main);// 设置数据binding.setViewModel(new MainViewModel());}
}

5. 关联过程总结

  1. 布局编译:XML 布局文件被编译成二进制格式
  2. 资源ID生成:在 R.java 中生成对应的资源ID
  3. 布局加载setContentView() 方法加载并解析布局文件
  4. 视图创建:创建布局中定义的所有 View 对象
  5. 视图层次构建:构建完整的视图层次结构
  6. Activity 关联:将布局设置为 Activity 的内容视图

6. 注意事项

  • 必须在 onCreate() 方法中调用 setContentView()
  • 布局文件应该放在 res/layout/ 目录下
  • 使用 findViewById() 需要在 setContentView() 之后调用
  • ViewBinding 和 DataBinding 提供了更安全、更方便的视图访问方式

这种关联机制使得 Android 能够将 UI 设计与业务逻辑分离,提高了代码的可维护性。

http://www.dtcms.com/a/596515.html

相关文章:

  • 临桂区建设局网站北京seo做排名
  • 东阳建设局网站自适应网站建设多少钱
  • UI创作思想总结
  • 4、Python3.11新特性
  • Java-Spring入门指南(二十九)Android交互核心:按钮点击事件与Activity跳转实战
  • 云手机的两大核心技术
  • Postman VS swagger VS PostIn,接口管理工具选型指南
  • 【大数据技术05】数据加工
  • es 书籍检索-上篇
  • Electron 智能文件分析器开发实战适配鸿蒙
  • 鸿蒙文件操作
  • 手工做环保衣的网站湖北省工程建设信息官方网站
  • ShellCrash 安装与配置踩坑与解决日志
  • redis 的面试点总结
  • DS1302 简单介绍
  • JS DOM 操作与性能优化实战指南:构建高效可交互的页面结构
  • 【Java】基于策略模式 + 工厂模式多设计模式下:重构租房系统核心之城市房源列表缓存与高性能筛选
  • 学校门户网站作用收录查询工具
  • 如何在资源不足时快速补救项目延误
  • C++多线程之线程管控
  • 企业BI项目建设--如何梳理企业的指标体系
  • Linux 虚拟文件系统(VFS)深度解析
  • 系统思考:aAI产业链的啤酒游戏
  • 天文知识--北斗七星
  • 网站建设后需要交费吗网络营销专业培训机构
  • vue3获取循环中的ref
  • 11.11 脚本网页 跳棋
  • uni-app:实现快递的节点功能
  • 使用虚拟机搭建简易K8s实验环境的一种方法
  • 构建下一代临床AI诊断系统:基于CPC-Bench基准的工程化路线图(上)