Android学习:自定义Activity启动与数据传递详解
需积分: 31 138 浏览量
更新于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的创建、启动方式、数据传递以及屏幕方向管理。理解并掌握这些核心概念,能帮助你构建出更灵活、功能丰富的应用程序。
2021-01-03 上传
2016-06-15 上传
2023-07-30 上传
2023-08-14 上传
2023-09-10 上传
2023-04-01 上传
2024-01-07 上传
2023-06-11 上传
pin-csdn
- 粉丝: 53
- 资源: 13
最新资源
- Raspberry Pi OpenCL驱动程序安装与QEMU仿真指南
- Apache RocketMQ Go客户端:全面支持与消息处理功能
- WStage平台:无线传感器网络阶段数据交互技术
- 基于Java SpringBoot和微信小程序的ssm智能仓储系统开发
- CorrectMe项目:自动更正与建议API的开发与应用
- IdeaBiz请求处理程序JAVA:自动化API调用与令牌管理
- 墨西哥面包店研讨会:介绍关键业绩指标(KPI)与评估标准
- 2014年Android音乐播放器源码学习分享
- CleverRecyclerView扩展库:滑动效果与特性增强
- 利用Python和SURF特征识别斑点猫图像
- Wurpr开源PHP MySQL包装器:安全易用且高效
- Scratch少儿编程:Kanon妹系闹钟音效素材包
- 食品分享社交应用的开发教程与功能介绍
- Cookies by lfj.io: 浏览数据智能管理与同步工具
- 掌握SSH框架与SpringMVC Hibernate集成教程
- C语言实现FFT算法及互相关性能优化指南