Android开发教程:布局与数据传递
需积分: 9 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应用至关重要。
1457 浏览量
128 浏览量
3390 浏览量
2012-07-18 上传
2021-10-04 上传
2021-10-14 上传
2013-08-15 上传
2009-08-06 上传
2012-01-31 上传
PengPengPro
- 粉丝: 3
- 资源: 233
最新资源
- SQLserver定时备份存储过程
- Oracle9i 数据库设计指引全集
- 建立ARM-Linux交叉编译环境
- 嵌入式系统及硬件基础.ppt
- Linux系统移植(讲得很详细)
- LZW编码 已知:带压缩的数据文件1、 使用编程语言:C++2、 输入:任意的数据文件3、 输出:压缩后的数据文件4、 源程序格式要整齐清晰,注释简单明了。
- wm8731-pdf
- 驱动程序开发.ppt
- 轻松进入STM32+Cortex-M3世界
- 基本算法正式稿pascal
- WEB程序设计课件第一章
- C/C++高质量编程(林锐)
- 单片机实现交通灯控制
- 费诺编码输入为 7个信源符号,其概率分布为:(其中信源符号用A B、、G表示)A:0.2 B:0.19 C:0.18 D:0.17 E:0.15 F:0.10 G:0.01然后输入程序中得到结果(详细文档,值得一下)
- C#编程语言与面向对象基础教程
- 使用STM32的软件库在IAR的EWARM下进行应用开发