Android学习:自定义Activity启动与数据传递详解
在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的创建、启动方式、数据传递以及屏幕方向管理。理解并掌握这些核心概念,能帮助你构建出更灵活、功能丰富的应用程序。
创建一个activity的java类。继承activity,设置显示布局
a、需要在AndroidManifest.xml清单文件中为其配置一个activity标签
b、如果标签中如果带有这个子节点,则会在系统中多创建一个快捷图标
这个是activity的入口,应用的场景不多,在android系统中,电话和联系人应用就是两个入口
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
c、一个应用程序可以在桌面创建多个快捷图标。
activity的名称、图标可以和应用程序的名称、图标不相同
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
例如:
<activity
android:icon="@drawable/photo3"//应用的图标
android:label="Second"//应用在界面显示的名称
android:name="com.example.activity.SecondActivity">//activity名称
//一般自己的activity不会配置启动入口,是用跳转的
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
注意:一定要在清单文件中配置activity标签,不然是启动不了的!
2、启动activity-显示启动和隐式启动:
Activity的跳转一定需要创建Intent对象,通过设置intent对象的参数指定要跳转Activity
显示启动:通过设置Activity的包名和类名实现跳转,称为显式意图。
隐式启动:通过指定动作实现跳转,称为隐式意图
例如:
显示启动:
a、显式启动SecondActivity
//这个是显式意图
Intent intent = new Intent();
//设置上下文和目标Activity的字节码
intent.setClass(this, SecondActivity.class);//使用字节码对象
startActivity(intent);
b、显式启动拨号器
Intent intent = new Intent();
//arg0:目标Activity所在的应用的包名
//arg1:目标Activity的类名
//因为类的包名有可能和应用的包名不一样,所以第二个参数必须指定包名
intent.setClassName("com.android.dialer", "com.android.dialer.DialtactsActivity");//使用类名
intent.setData(Uri.parse("tel:13811111111"));//接收一个Url参数,将字符串转换一下
startActivity(intent);
隐式启动:
隐式意图跳转至指定Activity
Intent intent = new Intent();
//设置动作
剩余7页未读,继续阅读
- 粉丝: 53
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展