Android学习:自定义Activity启动与数据传递详解
需积分: 31 185 浏览量
更新于2024-09-09
收藏 9KB TXT 举报
在Android开发中,学习Activity的生命周期和页面跳转是至关重要的。本文档将带你逐步探索以下几个关键知识点:
1. 创建自定义Activity
在Android项目中,首先需要在`AndroidManifest.xml`文件中声明你的Activity。一个基本的Activity配置包括将其标记为`<activity>`元素,并设置必要的属性,如图标(`android:icon`)和标签(`android:label`)。例如,`SecondActivity`的定义应包含以下内容:
```xml
<activity
android:icon="@drawable/photo3"
android:label="Second"
android:name="com.example.activity.SecondActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
```
这表示`SecondActivity`是一个可以作为应用入口的活动,可以通过指定`action`和`category`来启动。
2. 启动Activity-显示启动与隐式启动
- 显示启动(explicit launch)是指通过明确调用`startActivity()`方法,指定目标Activity。例如,从当前Activity启动`SecondActivity`:
```java
Intent intent = new Intent();
intent.setClass(this, SecondActivity.class);
startActivity(intent);
```
- 隐式启动(implicit launch)则是通过系统广播或Intent解析,例如当用户点击某个外部链接或者执行某个动作时,系统会根据Intent的`ACTION`和`CATEGORY`来决定启动哪个Activity。在`SecondActivity`的定义中,已经设置了可以隐式启动的意图过滤器。
3. 获取隐式启动的数据传递
隐式启动时,如果需要传递数据,可以在Intent中添加`putExtra()`方法。例如,从`MainActivity`传递数据到`SecondActivity`:
```java
Intent intent = new Intent();
intent.putExtra("key", "value");
startActivity(intent, SecondActivity.class);
```
在`SecondActivity`中,可以使用`getIntent().getStringExtra("key")`来接收这些数据。
4. 显示启动传递数据
显示启动时,同样可以通过`putExtra()`添加数据,然后在目标Activity中通过`getIntent().getSerializableExtra()`或`getIntExtra()`等方法获取。
5. 禁止横竖屏切换
为了限制屏幕方向,可以在`AndroidManifest.xml`中的`<activity>`元素中设置`android:configChanges`属性,如:
```xml
<activity
...>
<activity android:configChanges="orientation|screenSize"/>
</activity>
```
这样,系统不会自动处理屏幕方向变化,需要开发者手动处理旋转逻辑。
6. 使用`startActivityForResult()`
`startActivityForResult()`用于发起一个请求,它会在启动的Activity完成操作后返回结果。当你需要获取数据返回时,应在`SecondActivity`中设置`setResult()`,并在完成后调用`finish()`,然后在`MainActivity`中通过`onActivityResult()`处理结果。
总结来说,本文档详细介绍了Android开发中Activity的创建、启动方式、数据传递以及屏幕方向管理。理解并掌握这些核心概念,能帮助你构建出更灵活、功能丰富的应用程序。
2016-06-15 上传
2021-01-03 上传
2016-10-28 上传
2021-07-09 上传
2009-07-17 上传
2014-11-17 上传
2019-03-30 上传
2009-07-08 上传
pin-csdn
- 粉丝: 53
- 资源: 13
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍