Android开发教程:布局与数据传递

需积分: 9 1 下载量 31 浏览量 更新于2024-09-16 收藏 3.05MB PDF 举报
"新版Android开发教程+笔记六--应用3、4 布局.pdf" 本文档主要介绍了Android应用开发中的布局管理和数据传递,特别是如何使用Bundle在Activity之间传递数据。布局是Android应用用户界面的基础,而有效地传递数据是实现不同组件间交互的关键。下面将详细阐述这两个主题。 ### Android布局管理 在Android开发中,布局(Layout)用于定义屏幕上的组件(如按钮、文本框等)的位置和排列方式。常见的布局类型包括: 1. 线性布局(LinearLayout):按照垂直或水平方向排列子视图。 2. 相对布局(RelativeLayout):子视图相对于其他视图的位置进行定位。 3. 网格布局(GridLayout):将视图分隔成网格,每个视图占据一个单元格。 4. 帧布局(FrameLayout):子视图按顺序叠加,最后一个子视图位于最上方。 5. 约束布局(ConstraintLayout):通过连接约束来确定视图位置,提供更灵活的布局设计。 布局通常包含在XML文件中,可以使用Android Studio的可视化编辑器进行拖放式设计,也可以通过代码动态创建。 ### Bundle在Activity间的数据传递 在Android中,`Bundle`对象用于存储键值对,它常被用作`Intent`的一部分,以便在启动另一个Activity时传递数据。以下是使用Bundle传递数据的基本步骤: 1. 创建Bundle对象:在源Activity中,首先创建一个`Bundle`实例,然后使用`putXXX`方法(如`putString`)将数据存入Bundle,其中`XXX`代表数据类型。 ```java Bundle myBundelForName = new Bundle(); myBundelForName.putString("Key_Name", inName.getText().toString()); myBundelForName.putString("Key_Age", inAge.getText().toString()); ``` 2. 将Bundle附加到Intent:将创建好的Bundle对象放入`Intent`的`extras`字段中,这样当启动新的Activity时,数据就会一起传递过去。 ```java Intent openWelcomeActivityIntent = new Intent(); openWelcomeActivityIntent.putExtras(myBundelForName); openWelcomeActivityIntent.setClass(AndroidBundel.this, Welcome.class); startActivity(openWelcomeActivityIntent); ``` 3. 在目标Activity中获取数据:在目标Activity中,可以通过调用`getIntent().getExtras()`获取传递过来的Bundle,然后使用`getXXX`方法(如`getString`)取出数据。 ```java Bundle myBundelForGetName = this.getIntent().getExtras(); String name = myBundelForGetName.getString("Key_Name"); myTextView_showName.setText("欢迎您进入:" + name); ``` ### 数据传递的注意事项 - 传递的数据类型必须与`put`和`get`方法匹配,例如,`putString`对应`getString`,`putInt`对应`getInt`。 - Bundle可以传递基本数据类型、数组、集合以及Parcelable和Serializable接口的实现类对象。 - 当传递大量数据或复杂对象时,应考虑使用Parcelable而非Serializable,因为Parcelable的序列化性能更好。 - 不要过度依赖Activity间的直接数据传递,这可能导致耦合度过高。考虑使用静态变量、广播接收者、ContentProvider或ViewModel等机制来管理数据。 Android布局管理是构建用户界面的核心,而Bundle则提供了在Activity之间安全、有效传递数据的手段。理解并熟练运用这些概念,对于开发高质量的Android应用至关重要。