Android的四大组件之Activity

简介: Activity( 活动 )一.创建Activity二.启动Activity的两种方式三.Activity之间页面跳转四.Activity之间的数据传输五.实现上一个activity接收下一个activity关闭之后传递的数据

Activity( 活动 )

用户操作的可视化界面;为用户提供了一个完成操作指令的窗口


Activity是通过一个Activity栈来进行管理,当前显示的Activity被放到栈顶


当我们创建完毕Activity之后,需要调用setContentView()方法来完成界面的显示


在Android App 中只要能看见的几乎都要依托于Activity,Activity是在开发中使用最频繁的一种组件


一.创建Activity

第一步:创建一个类继承AppCompatActivity




第二步:在清单配置文件AndroidMainfest中声明这个类




第三步:如果这个Activity的布局是首页,则需要声明 intent-filter




二.启动Activity的两种方式

1.startActivity();


2.startActivityForResult();


三.Activity之间页面跳转

Activity之间的页面切换是通过Intent进行通信的


Intent中文翻译成意图,Intent(意图)主要是解决Android应用的各项组件之间的通讯,


Intent又分为两种,一种是显示意图,一种是隐式意图。


显示意图:明确指定组件名的Intent为显式意图,指定了Intent应该传递给那个组件。


隐式意图:没有明确指定组件名的Intent为隐式意图,系统会根据隐式意图中设置的 动作(action)                      类别(category)、数据URI等来匹配最合适的组件。


显示意图的跳转:


第一种方式


       Intent intent=new Intent();

       intent.setClass(MainActivity.this,SecondActivity.class);

       startActivity(intent);

第二种方式


       Intent intent=new Intent(MainActivity.this,SecondActivity.class);

       startActivity(intent);

第三种方式


Intent intent = new Intent();

ComponentName componentName = new ComponentName(MainActivity.this, SecondActivity.class);

intent.setComponent(componentName);

startActivity(intent);

第四种方式


       startActivity(new Intent(MainActivity.this, SecondActivity.class));

隐式意图的跳转


       Intent intent = new Intent();

       //参数放入跳转页面的action

       intent.setAction("android.intent.action.MAIN");

       startActivity(intent);

四.Activity之间的数据传输

Activity之间是通过Intent进行通信的。intent.putExtra()这个方法参数有多种可以满足数据传输需求,此方法以key-value的方式存储 键值对


第一种方式


           //第一种方法是传输基本类型数据

           Intent intent = new Intent(MainActivity.this,SecondActivity.class);

           intent.putExtra("name","xiao_ming");

第二种方式


           //第二种方法是传输一个bundle,bundle类似一个map,可以防止key-value类型数据

           Intent intent = new Intent(MainActivity.this,SecondActivity.class);

           Bundle bundle = new Bundle();

           bundle.putString("name","xiao_ming");

           intent.putExtra("bundle",bundle);

第三种方式


           //第三种方法传输一个序列化,这里User是implements Serializable之后才能传递

           Intent intent = new Intent(MainActivity.this,SecondActivity.class);

           intent.putExtra("name",new User());

           startActivity(intent);

五.实现上一个activity接收下一个activity关闭之后传递的数据

第一步


       //写在MainActivity中

       Intent intent = new Intent(MainActivity.this,SecondActivity.class);

       startActivityForResult(intent,100);

第二步


       //写在SecondActivity中

       Intent intent = new Intent();

       intent.putExtra("name","xiao_ming");

       setResult(RESULT_OK,intent);

       finish();

第三步


//写在MainActivity中

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

       super.onActivityResult(requestCode, resultCode, data);

       if(requestCode==100&&resultCode==RESULT_OK){

           //写需要执行的操作

       }

}

创建MainActivity和SecondActivity,按以上三步走,就可以实现SecondActivity页面关闭后,MainActivity页面将打开,并获取SecondActivity传过来的数据


下一篇会给大家分享Activity的生命周期


注意事项

1.  android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不  识别也不执行该Activity。

2.  在android stdio会自动生成配置,但eclipse需要自己手动添加配置


3.  在Android App 中只要能看见的几乎都要依托于Activity,Activity是在开发中使用最频繁的一种组件


4.  当我们创建完毕Activity之后,需要调用setContentView()方法来完成界面的显示


目录
相关文章
|
9天前
|
存储 Android开发 开发者
深入理解安卓应用开发的核心组件
【10月更文挑战第8天】探索Android应用开发的精髓,本文带你了解安卓核心组件的奥秘,包括Activity、Service、BroadcastReceiver和ContentProvider。我们将通过代码示例,揭示这些组件如何协同工作,构建出功能强大且响应迅速的应用程序。无论你是初学者还是资深开发者,这篇文章都将为你提供新的视角和深度知识。
|
12天前
|
数据可视化 Android开发 开发者
安卓应用开发中的自定义View组件
【10月更文挑战第5天】在安卓应用开发中,自定义View组件是提升用户交互体验的利器。本篇将深入探讨如何从零开始创建自定义View,包括设计理念、实现步骤以及性能优化技巧,帮助开发者打造流畅且富有创意的用户界面。
42 0
|
12天前
|
XML 前端开发 Java
安卓应用开发中的自定义View组件
【10月更文挑战第5天】自定义View是安卓应用开发的一块基石,它为开发者提供了无限的可能。通过掌握其原理和实现方法,可以创造出既美观又实用的用户界面。本文将引导你了解自定义View的创建过程,包括绘制技巧、事件处理以及性能优化等关键步骤。
|
21天前
|
测试技术 数据库 Android开发
深入解析Android架构组件——Jetpack的使用与实践
本文旨在探讨谷歌推出的Android架构组件——Jetpack,在现代Android开发中的应用。Jetpack作为一系列库和工具的集合,旨在帮助开发者更轻松地编写出健壮、可维护且性能优异的应用。通过详细解析各个组件如Lifecycle、ViewModel、LiveData等,我们将了解其原理和使用场景,并结合实例展示如何在实际项目中应用这些组件,提升开发效率和应用质量。
27 6
|
1月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
讲解Activity的启动流程了,Activity的启动流程相对复杂一下,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder机制等等, 首先介绍一下Activity,这里引用一下Android guide中对Activity的介绍:
41 4
|
1月前
|
存储 开发框架 数据可视化
深入解析Android应用开发中的四大核心组件
本文将探讨Android开发中的四大核心组件——Activity、Service、BroadcastReceiver和ContentProvider。我们将深入了解每个组件的定义、作用、使用方法及它们之间的交互方式,以帮助开发者更好地理解和应用这些组件,提升Android应用开发的能力和效率。
99 5
|
2月前
|
XML Android开发 数据格式
android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?
本文通过案例分析了在Android中当两个Activity都设置了`android.intent.category.LAUNCHER`类别时,会导致它们同时在应用启动器的"所有应用"页面显示为不同的启动入口。
48 2
android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?
|
1月前
|
缓存 搜索推荐 Android开发
安卓应用开发中的自定义View组件实践
【9月更文挑战第10天】在安卓开发领域,自定义View是提升用户体验和实现界面个性化的重要手段。本文将通过一个实际案例,展示如何在安卓项目中创建和使用自定义View组件,包括设计思路、实现步骤以及可能遇到的问题和解决方案。文章不仅提供了代码示例,还深入探讨了自定义View的性能优化技巧,旨在帮助开发者更好地掌握这一技能。
|
1月前
|
Android开发 开发者
Android面试之Activity启动流程简述
每个Android开发者都熟悉的Activity,但你是否了解它的启动流程呢?本文将带你深入了解。启动流程涉及四个关键角色:Launcher进程、SystemServer的AMS、应用程序的ActivityThread及Zygote进程。核心在于AMS与ActivityThread间的通信。文章详细解析了从Launcher启动Activity的过程,包括通过AIDL获取AMS、Zygote进程启动以及ActivityThread与AMS的通信机制。接着介绍了如何创建Application及Activity的具体步骤。整体流程清晰明了,帮助你更深入理解Activity的工作原理。
41 0
|
2月前
|
存储 搜索推荐 Java
探索安卓开发中的自定义视图:打造个性化UI组件Java中的异常处理:从基础到高级
【8月更文挑战第29天】在安卓应用的海洋中,一个独特的用户界面(UI)能让应用脱颖而出。自定义视图是实现这一目标的强大工具。本文将通过一个简单的自定义计数器视图示例,展示如何从零开始创建一个具有独特风格和功能的安卓UI组件,并讨论在此过程中涉及的设计原则、性能优化和兼容性问题。准备好让你的应用与众不同了吗?让我们开始吧!