Android Activity之间的跳转以及数据的交互传递
程序员文章站
2022-05-17 14:38:10
...
[size=small]Lesson3:使用Intent 让窗体之间对话
1 Activity的建立以及相互之间的跳转实现:
1.1 创建一个类(B),继承Activity这个基类,并实现onCreate()这个方法,该方法在Activity启动的时候回调,该方法调用的setContentView(View view)方法显示要展示的View;
1.2 为B类编写对应的layout布局文件.xml;
1.3 配置Activity,在AndroidMainfest.xml中注册:标签:<activity android:name=”完整的类的路径名”></activity>
1.3.1 每个Activity都会对应AndroidMainfest.xml文件中的一个<activity>标签,即为<application>元素添加<activity>子元素即可配置Activity;
1.3.2 属性1:android:name 该属性需要指定一个Activity类的子类的属性值,该值的表示有三种类型:
1.3.2.1 指定完整的类名;
1.3.2.2 只指定类名;
1.3.2.3 指定相对类名;
1.3.3 属性2:android:lable指定应用程序列表中程序图标下方的文字,如果没有指定该属性,系统会使用<application>标签的android:label属性值来代替;
1.3.4 属性3:android:ico属性指定Activity对应的图标,如果未指定,则系统会使用<application>标签的android:icon属性值来代替。
1.3.5 配置特性:
1.3.5.1 :在<activity>标签中还需要一个<intent-filter>子标签来配置Activity的特性;
1.3.5.2 :<intent-filter>中常用的两个子标签:
1.3.5.2.1 :<acrion>和<category>这两个标签都只有一个android:name属性,其中<action>标签的android:name属性用于指定Activity所接收的动作。<category>标签的android:name属性用于指定Activity的种类;
1.4 使用Intent实现跳转以及数据的传递;
1.4.1 首先用Bundle对数据进行封装 注:Bundle就是一个容器,能保证数据的安全性和完整性;(该类是对HashMap的封装);
1.5 new一个Intent对象,将Bundle对象分配个Intent;intent.putExtras(bundle);
1.5.1 Intent说明:
1.5.1.1 Intent是一次即将操作的抽象描述,是一种运行时绑定(runtime binding)机制,它能在程序运行过程中连接两个不同的组件;通过Intent,你的程序可以向Android来表达某种请求或者意愿,Android会根据意愿的内容选择合适的组件来响应;
1.5.1.2 详解:Intent是一个动作的完整的描述,包含了动作的产生组件,接收组件和传递数据信息:
1.5.2 用途:
1.5.2.1 Intent也可称为一个在不同组件之间传递的消息,这个消息在到达接收组件后,接收组件会执行相关的动作;
1.5.2.2 Intent为Activity、Service和BroadcastReceiver等组件提供交互能力;
1.5.2.3 启动Activity和Service
1.5.2.4 在Android系统上发布广播消息;
1.5.2.4.1 广播消息可以是接收到特定数据或消息,也可以是手机的信号变化或电池的、电量过低等信息;
1.6 启动Activity跳转;
1.6.1 在Android系统中,应用程序一般有 多个Activity,Intent可以实现不同Activity之间的切换和数据传递;
1.6.2 启动方式:
1.6.2.1 显示启动:必须在Intent中指明启动的Activity所在的类;
1.6.2.2 隐式启动,Android系统根据Intent的动作和数据来决定启动哪一个Activity,也就是说隐式启动时,Intent中只包含需要执行的动作和所包含的数据,而无需指明具体启动哪一个Activity,选择权有Android系统和最终用户决定;
注:为了管理应用界面中的各组建,调用Activity的findViewById(int id)方法来获取程序界面的组件;
Intent 的基本使用—Activity之间数据的相互传递:A 代表:MainActivity B 代表用户创建的:
startActivity可启动另一个Acrivity,用Intent传递数据,但是不能返回数据;
用startActivityForResultIntent intent,Int requestCode,可以启动另一个
Activity并返回所需结果;
目的:A是主界面,B是子功能模块,要从A启动B,B完成功能后把结果返回给A;
数据相互交互使用步骤:
一、 在A中启动Activity时使用:startActivityForResult(intent,1);
a) 参数1:Intent的对象;参数2:对应回收Bundle时识别用的;
b) 在A中重写onActivityResult();这个方法,编写要执行的动作;
二、 在B中使用setResult(5,intent);来准备要传回的数据
a) 参数1:标示对应的intent;参数2:当前对应的Intent的对象;
三、 调用finish();完成操作;
[/size]
1 Activity的建立以及相互之间的跳转实现:
1.1 创建一个类(B),继承Activity这个基类,并实现onCreate()这个方法,该方法在Activity启动的时候回调,该方法调用的setContentView(View view)方法显示要展示的View;
1.2 为B类编写对应的layout布局文件.xml;
1.3 配置Activity,在AndroidMainfest.xml中注册:标签:<activity android:name=”完整的类的路径名”></activity>
1.3.1 每个Activity都会对应AndroidMainfest.xml文件中的一个<activity>标签,即为<application>元素添加<activity>子元素即可配置Activity;
1.3.2 属性1:android:name 该属性需要指定一个Activity类的子类的属性值,该值的表示有三种类型:
1.3.2.1 指定完整的类名;
1.3.2.2 只指定类名;
1.3.2.3 指定相对类名;
1.3.3 属性2:android:lable指定应用程序列表中程序图标下方的文字,如果没有指定该属性,系统会使用<application>标签的android:label属性值来代替;
1.3.4 属性3:android:ico属性指定Activity对应的图标,如果未指定,则系统会使用<application>标签的android:icon属性值来代替。
1.3.5 配置特性:
1.3.5.1 :在<activity>标签中还需要一个<intent-filter>子标签来配置Activity的特性;
1.3.5.2 :<intent-filter>中常用的两个子标签:
1.3.5.2.1 :<acrion>和<category>这两个标签都只有一个android:name属性,其中<action>标签的android:name属性用于指定Activity所接收的动作。<category>标签的android:name属性用于指定Activity的种类;
1.4 使用Intent实现跳转以及数据的传递;
1.4.1 首先用Bundle对数据进行封装 注:Bundle就是一个容器,能保证数据的安全性和完整性;(该类是对HashMap的封装);
1.5 new一个Intent对象,将Bundle对象分配个Intent;intent.putExtras(bundle);
1.5.1 Intent说明:
1.5.1.1 Intent是一次即将操作的抽象描述,是一种运行时绑定(runtime binding)机制,它能在程序运行过程中连接两个不同的组件;通过Intent,你的程序可以向Android来表达某种请求或者意愿,Android会根据意愿的内容选择合适的组件来响应;
1.5.1.2 详解:Intent是一个动作的完整的描述,包含了动作的产生组件,接收组件和传递数据信息:
1.5.2 用途:
1.5.2.1 Intent也可称为一个在不同组件之间传递的消息,这个消息在到达接收组件后,接收组件会执行相关的动作;
1.5.2.2 Intent为Activity、Service和BroadcastReceiver等组件提供交互能力;
1.5.2.3 启动Activity和Service
1.5.2.4 在Android系统上发布广播消息;
1.5.2.4.1 广播消息可以是接收到特定数据或消息,也可以是手机的信号变化或电池的、电量过低等信息;
1.6 启动Activity跳转;
1.6.1 在Android系统中,应用程序一般有 多个Activity,Intent可以实现不同Activity之间的切换和数据传递;
1.6.2 启动方式:
1.6.2.1 显示启动:必须在Intent中指明启动的Activity所在的类;
1.6.2.2 隐式启动,Android系统根据Intent的动作和数据来决定启动哪一个Activity,也就是说隐式启动时,Intent中只包含需要执行的动作和所包含的数据,而无需指明具体启动哪一个Activity,选择权有Android系统和最终用户决定;
注:为了管理应用界面中的各组建,调用Activity的findViewById(int id)方法来获取程序界面的组件;
Intent 的基本使用—Activity之间数据的相互传递:A 代表:MainActivity B 代表用户创建的:
startActivity可启动另一个Acrivity,用Intent传递数据,但是不能返回数据;
用startActivityForResultIntent intent,Int requestCode,可以启动另一个
Activity并返回所需结果;
目的:A是主界面,B是子功能模块,要从A启动B,B完成功能后把结果返回给A;
数据相互交互使用步骤:
一、 在A中启动Activity时使用:startActivityForResult(intent,1);
a) 参数1:Intent的对象;参数2:对应回收Bundle时识别用的;
b) 在A中重写onActivityResult();这个方法,编写要执行的动作;
二、 在B中使用setResult(5,intent);来准备要传回的数据
a) 参数1:标示对应的intent;参数2:当前对应的Intent的对象;
三、 调用finish();完成操作;
[/size]