安卓开发05:Activity之间链接和传递参数

2023-05-16

Activity之间链接和传递参数主要通过Intent安卓的一个对象来实现。

首先我们创建一个MainActivity:

[java]  view plain copy print ?
  1. package com.example.androidtest;  
  2.   
  3.   
  4. import android.app.Activity;  
  5. import android.content.Intent;  
  6. import android.os.Bundle;  
  7. import android.util.Log;  
  8. import android.view.View;  
  9. import android.view.Window;  
  10. import android.widget.Toast;  
  11.   
  12. /** 
  13.  * 安卓入口文件 
  14.  * @author zhuli.zhul 
  15.  * @date 2013 2013-6-5 下午3:09:14 
  16.  */  
  17. public class MainActivity extends Activity {  
  18.   
  19.     private String tag          = "MainActivity";  
  20.   
  21.     private int    request_code = 1;  
  22.   
  23.     /** 
  24.      * 页面布局 
  25.      */  
  26.     protected void onCreate(Bundle savedInstanceState) {  
  27.         super.onCreate(savedInstanceState);  
  28.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  29.         setContentView(R.layout.activity_main); //设置一个View模板  
  30.         Log.d(tag, "In the onCreate() event");  
  31.     }  
  32.   
  33.     /** 
  34.      * 点击开启一个新的Activity页面 
  35.      * @param view 
  36.      */  
  37.     public void onClickStartActivity(View view) {  
  38.         Log.d(tag, "onClickStartActivity");  
  39.         //下面可以传递参数,以及点击后,打开一个新的Activity  
  40.         Intent i = new Intent("android.intent.action.OpenActivity");  
  41.         i.putExtra("str""这个是传递一个参数");  
  42.         i.putExtra("int"100);  
  43.         startActivityForResult(i, request_code);  
  44.   
  45.     }  
  46.   
  47.     /** 
  48.      * 监控打开的Activity页面关闭后回传的参数 
  49.      */  
  50.     public void onActivityResult(int requestCode, int resultCode, Intent data) {  
  51.         Toast.makeText(getBaseContext(), data.getData().toString(), Toast.LENGTH_SHORT).show();  
  52.     }  
  53. }  

同时在layout文件夹下创建一个布局文件activity_main.xml

[html]  view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>    
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
  3.     android:layout_width="fill_parent"    
  4.     android:layout_height="fill_parent"    
  5.     android:orientation="vertical" >    
  6.         
  7.       
  8. <Button    
  9.     android:id="@+id/btn_dialogs"    
  10.     android:layout_width="fill_parent"     
  11.     android:layout_height="wrap_content"    
  12.     android:text="@string/startActivity"    
  13.     android:onClick="onClickStartActivity" />    
  14.      
  15. </LinearLayout>   

点击布局页面上的按钮后,就会触发onClickStartActivity方法,该方法会启动一个OpenActivity:

同时我们传递了str和int参数过去。

[java]  view plain copy print ?
  1. /** 
  2.  * 点击开启一个新的Activity页面 
  3.  * @param view 
  4.  */  
  5. public void onClickStartActivity(View view) {  
  6.     Log.d(tag, "onClickStartActivity");  
  7.     //下面可以传递参数,以及点击后,打开一个新的Activity  
  8.     Intent i = new Intent("android.intent.action.OpenActivity");  
  9.     i.putExtra("str""这个是传递一个参数");  
  10.     i.putExtra("int"100);  
  11.     startActivityForResult(i, request_code);  
  12.   
  13. }  

创建一个OpenActivity:

OpenActivity中,创建了一个布局的页面,并且布局页面中,有通过消息的方式输出MainActivity的参数

并且OpenActivity中,有一个OnClick方法,主要用来点击布局页面上的一个按钮后触发,并且OnClick方法主要操作就是返回MainActivity,并且传递参数“Hello World”到MainActivity

[java]  view plain copy print ?
  1. package com.example.androidtest;  
  2.   
  3.   
  4. import android.app.Activity;  
  5. import android.content.Intent;  
  6. import android.net.Uri;  
  7. import android.os.Bundle;  
  8. import android.util.Log;  
  9. import android.view.View;  
  10. import android.view.Window;  
  11. import android.widget.Toast;  
  12.   
  13. public class OpenActivity extends Activity {  
  14.   
  15.     /** 
  16.      * 页面布局 
  17.      */  
  18.     protected void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  21.         setContentView(R.layout.activity_open); //设置一个View模板  
  22.         Log.d("SECOND""In the onCreate() event");  
  23.   
  24.         //捕获MainActivity打开该Activity后 接收传递过来的参数  
  25.         String str = getIntent().getStringExtra("str");  
  26.         Toast.makeText(getBaseContext(), str, Toast.LENGTH_SHORT).show();  
  27.   
  28.         int i = getIntent().getIntExtra("int"0);  
  29.         Toast.makeText(getBaseContext(), "年龄是:" + i, Toast.LENGTH_SHORT).show();  
  30.     }  
  31.   
  32.     /** 
  33.      * 点击按钮事件后,返回MainActivity页面 
  34.      * @param view 
  35.      */  
  36.     public void onClick(View view) {  
  37.         Intent data = new Intent();  
  38.         data.setData(Uri.parse("Hello World"));  
  39.         setResult(1, data);  
  40.         finish();  
  41.     }  
  42. }  

创建一个布局文件activity_open:

[html]  view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>    
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
  3.     android:layout_width="fill_parent"    
  4.     android:layout_height="fill_parent"    
  5.     android:orientation="vertical" >  
  6.   
  7.     <AnalogClock  
  8.         android:id="@+id/analogClock1"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content" />  
  11.       
  12.     <Button      
  13.     android:id="@+id/btn_dialogs"      
  14.     android:layout_width="fill_parent"       
  15.     android:layout_height="wrap_content"      
  16.     android:text="@string/progressDialog"      
  17.     android:onClick="onClick" />    
  18.      
  19. </LinearLayout>   

修改AndroidManifest.xml:

新增或者修改Activity都需要在AndroidManifest.xml中进行相关修改:

[html]  view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.example.androidtest"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.   
  7.     <uses-sdk  
  8.         android:minSdkVersion="8"  
  9.         android:targetSdkVersion="17" />  
  10.   
  11.     <application  
  12.         android:allowBackup="true"  
  13.         android:icon="@drawable/ic_launcher"  
  14.         android:label="@string/app_name"  
  15.         android:theme="@style/AppTheme" >  
  16.         <!-- 默认的Activity -->  
  17.         <activity  
  18.             android:name="com.example.androidtest.MainActivity"  
  19.             android:label="@string/app_name" >  
  20.             <intent-filter>  
  21.                 <action android:name="android.intent.action.MAIN" />  
  22.   
  23.                 <category android:name="android.intent.category.LAUNCHER" />  
  24.             </intent-filter>  
  25.         </activity>  
  26.         <!-- 新增的Activity -->  
  27.         <activity  
  28.             android:name=".OpenActivity"  
  29.             android:label="Open Activity" >  
  30.             <intent-filter>  
  31.                 <action android:name="android.intent.action.OpenActivity" />  
  32.   
  33.                 <category android:name="android.intent.category.DEFAULT" />  
  34.             </intent-filter>  
  35.         </activity>  
  36.     </application>  
  37.   
  38. </manifest>  

说明:

打开新的Activity和传递参数:

[java]  view plain copy print ?
  1. Intent i = new Intent("android.intent.action.OpenActivity");  
  2. i.putExtra("str""这个是传递一个参数");  
  3. i.putExtra("int"100);  
  4. startActivityForResult(i, request_code);  

接收传递的参数:

[java]  view plain copy print ?
  1. //捕获MainActivity打开该Activity后 接收传递过来的参数  
  2. String str = getIntent().getStringExtra("str");  
  3. Toast.makeText(getBaseContext(), str, Toast.LENGTH_SHORT).show();  
  4.   
  5. int i = getIntent().getIntExtra("int"0);  
  6. Toast.makeText(getBaseContext(), "年龄是:" + i, Toast.LENGTH_SHORT).show();  

打开的Activity结束关闭后并传递参数到前一个Activity:

[java]  view plain copy print ?
  1. Intent data = new Intent();  
  2.    data.setData(Uri.parse("Hello World")); //传递参数  
  3.    setResult(RESULT_OK, data); //传递参数 RESULT_OK - 状态  data - 具体参数  
  4.    finish();  

监听回调的参数:

[java]  view plain copy print ?
  1. /** 
  2.  * 监控打开的Activity页面关闭后回传的参数 
  3.  */  
  4. public void onActivityResult(int requestCode, int resultCode, Intent data) {  
  5.     //requestCode 是startActivityForResult 传递的request_code,用于区分一个页面上打开的不同的Activity  
  6.     //resultCode 是setResult(RESULT_OK, data) 中的RESULT_OK 这个参数,主要是回调的数据状态  
  7.     //data就是传递的数据  
  8.     if (requestCode == request_code) {  
  9.         if (resultCode == RESULT_OK) {  
  10.             Toast.makeText(getBaseContext(), data.getData().toString(), Toast.LENGTH_SHORT).show();  
  11.         }  
  12.     }    
  13. }  


Bundle:不同的Activity之间的通信,还可以通过Bundle来传递数据。

[java]  view plain copy print ?
  1. Bundle bundle = new Bundle();  
  2. bundle.putSerializable("myOrderList",(Serializable) myOrderList); //传递一个序列化对象  
  3. intent.putExtras(bundle);  
  4. context.startActivity(intent);  

[java]  view plain copy print ?
  1. Bundle bundle = getIntent().getExtras();  
  2. ArrayList<JuOrderMO> myOrderList = (ArrayList<JuO
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安卓开发05:Activity之间链接和传递参数 的相关文章

  • springboot+vue+协同过滤算法电影推荐网站

    源码获取 xff1a 文末获取联系方式 xff01 一 项目运行 环境配置 xff1a Jdk1 8 43 Tomcat 8 5 43 Mysql 43 VUE 43 IDEA xff08 Eclispe MyEclispe Sts都支持
  • Ubuntu20.04下基于ROS和PX4的无人机仿真平台的基础配置搭建(我所遇到的问题)

    写在前面 xff1a 我目前也处于学习阶段 xff0c 当时按照ROS教程安装的20 04 xff0c 随后搭建XTDrone阶段因为版本问题出现了很多问题 xff0c 这是我根据问题 xff0c 检索后汇总的一些解决措施 本文中提到的问题
  • 手机如何远程连接linux系统的VPS

    1 首先下载安装APP xff1a iTerminal 2 运行iTerminal xff0c 然后点击SSH栏 3 然后按要求填入各项内容 xff0c 确认都正确后点击底下的连接按钮 4 如图连接成功后即可在手机上操作了
  • 学习总结

    错误 xff1a TypeError ERR INVALID ARG TYPE The 34 id 34 argument must be of type string Received an instance of IncomingMes
  • Java笔记_3(循环)

    Java笔记 3 一 判断与循环1 1 顺序结构1 2 分支结构1 2 1 if语句1 2 2 switch语句 1 3 循环结构1 3 1 for循环1 3 2 while循环1 3 3 do while循环 1 4 回文数的判断1 5
  • 关于getchar的用法及实例解析

    一 getchar 函数是什么 xff1f getchar 函数是获取一个字符 说到这里就有人问了 xff0c 为什么他的返回类型是int xff1f 因为实际上EOF 61 end of file xff08 1 xff09 xff0c
  • springboot基于JAVA的电影推荐系统的开发与实现 附源码-毕业设计112306

    目 录 摘 要 4 Abstract 5 第 1 章 前 言 6 1 1 研究背景 6 1 2 研究现状 6 1 3 系统开发目标 6 第 2 章 技术与原理 8 2 1 JSP 介绍 8 2 2 JAVA 技术 8 2 3 MySQL 数
  • Python 把图片变成字符画

    34 2022 2 12 34 from PIL import Image PIL 是一个 Python 图像处理库 ascii char 61 list 64 B 8 amp WM oahkbdpqwmZO0QLCJUY123456789
  • centos shasum 未找到命令

    span class token punctuation span root 64 redis 7 106 span class token punctuation span span class token comment echo n
  • ireport的使用总结

    ireport的使用总结 截图居然都没显示出来 xff0c 如有需要可以到 xff08 http download csdn net detail czp0608 4140640 xff09 下载 相信很多java程序员们 xff0c 在开
  • 2020-11-16 ZYNQ固化过程遇到的问题

    用XIlinx 2017 04版本固化程序的时候出现 Xilinx Program Flash Program Flash v2017 4 64 bit SW Build 2086221 on Fri Dec 15 20 55 39 MST
  • Windows终端美化

    Windows终端美化教程 一 设置PowerShell默认启动Windows Terminal 从Microsoft Store下载并打开Windows Terminal点击上方的下拉三角 xff0c 点击设置 xff0c 在启动中默认终
  • 在linux中安装weblogic12c

    卸载weblogic find span class token operator span opt span class token operator span weblogic3 span class token operator sp
  • 算法实现题:3-9 租用游艇问题

    算法实现题 xff1a 3 9 租用游艇问题 题目略 这个一个可用 DP 求解的问题 N 个游艇出租站 xff0c 不妨从出发到终点分别编号 0 xff0c 2 xff0c N 1 而且每两个站的租金都是不一样的 xff0c 我们用 r x
  • 開始在csdn上寫blog

    哈哈 現在開始寫些技術性的文字啦
  • 廣州亞運會項目維護?!

    今天要搞什麽亞運會的項目維護 xff0c 計算機學院需要招收一些精英 唉 xff01 他們就是好 xff01 有這麼多的機會 xff0c 我們這邊呢 xff01 看來學院老師一點都不關心我們的將來就業情況 我就鬱悶了 難道我們註定是這樣的嗎
  • arch linux 命令行设置临时静态IP

    设置临时静态ip 查看网卡名称 启用网卡 设置ip 设置默认网关 设置dns服务器 设置备用dns服务器 测试ping百度域名 xff08 等几秒出结果 xff09 span class token function ip span add
  • Jetpack-LiveData原理补充

    本篇主要对上篇分析LiveData时遗留的问题进行补充 xff0c 阅读本文需要实现对LiveData的原理有一定的了解 xff0c 如果不了解可以参考上一篇文章 xff1a Jetpack LiveData LiveData粘性事件 可以
  • postgre删除数据表重复数据

    select distinct into t sup supcomm copy from t sup supcomm drop table t sup supcomm select into t sup supcomm from t sup
  • postgre——to_date使用

    s date 61 to date to char date in 39 yyyy MM dd 39 39 yyyy MM dd 39 date in为time类型 xff0c s date为date类型

随机推荐

  • 旧电脑通过转接卡安装nvme固态硬盘无需修改bios即可用旧SATA硬盘实现UEFI启动win10/11

    注意 xff1a 本文探讨的是支持UEFI启动的旧电脑 MBR启动个人感觉已经被淘汰 xff0c 作者不再做研究 主要材料 xff1a PCI E转M 2的转接卡 xff08 根据你旧电脑支持情况选择 xff09 支持NVME协议M 2接口
  • postgre——case、union、小计总计(GROUP BY ROLLUP)写法

    将几张不同表结构的数据全部合并在一起 xff0c 使用了case union xff0c 同时实现小计总计 小计总计使用的 GROUP BY ROLLUP函数 xff0c GROUP BY ROLLUP使用双括号将字段括起来 xff0c 是
  • postgre连接符

    一 逻辑操作符 xff1a 常用的逻辑操作符有 xff1a AND OR 和NOT 其语义与其它编程语言中的逻辑操作符完全相同 二 比较操作符 xff1a 下面是PostgreSQL中提供的比较操作符列表 xff1a 操作符 描述 lt 小
  • springmvc拦截器

    1 自定义的拦截器 publicclass FirstInterceptor implements HandlerInterceptor 实现这个接口并重写方法 lt 配置自定义的拦截器 gt lt bean class 61 34 com
  • springmvc异常处理

    1 64 ExceptionHandler 在 64 ExceptionHandler 方法的入参中可以加入 Exception 类型的参数 该参数即对应发生的异常对象 64 ExceptionHandler 方法的入参中不能传入 Map
  • SpringMCV运行流程及整合spring

    一 Spring整合SpringMVC 64 Service用于标注业务层组件 64 Controller用于标注控制层组件 xff08 如struts中的action xff09 64 Repository用于标注数据访问组件 xff0c
  • Mac 下 man 命令汉化

    brew install automake brew install opencc git clone https github com man pages zh manpages zh git cd manpages zh autorec
  • FTP配置多用户多目录多权限

    环境介绍 根据开发的需求 要求创建FTP服务器 xff0c 把前端和后端分开用不同的FTP账号 系统环境 centos 7 4 防火墙设置 systemctl stop firewalld service 停止firewall xff08
  • Process finished with exit code -1073740791 (0xC0000409)

    选择编辑配置 勾选这个 出来具体问题 RuntimeError Unsupported image type must be 8bit gray or RGB image 就是这个原因 然后我卡在这里 xff0c 现在都还没有解决这个问题
  • Centos 6.8升级Python2.6.6至2.7.8

    由于之前用Python 2 7版本写了一个脚本 xff0c 移植到新的环境之后 xff0c 由于CentOS自带的Python版本较低 xff0c 有些函数执行出错 本文介绍CentOS 6 8从自带的Pyhon版本是2 6 6升级到2 7
  • Windows Server取消登录需按Ctrl+Alt+Delete组合键

    通过远程软件频繁远程Windows Server会遇到Ctrl 43 Alt 43 Delete组合键无法进入输入用户和密码的界面 xff0c 导致机器并没死机但是想登录又没法输入密码 xff0c 记录下取消方法 xff1a 1 Windo
  • 安装 Ubuntu 22.04.1 LTS 桌面版(详细步骤)

    文章目录 前言 xff1a 安装 Ubuntu 22 04 1 LTS 的先决条件 一 下载 Ubuntu 22 04 1 LTS 安装介质 二 制作 Ubuntu 22 04 1 LTS 引导 U 盘 三 从 U 盘引导 Ubuntu 四
  • Windows Server 2016-重置目录还原模式密码

    目录还原模式 xff1a Directory Services Restore Mode xff0c 简称DSRM xff0c 又称目录服务恢复模式 是Windows域控制器的服务器安全模式启动选项 DSRM允许管理员用来修复或还原修复或重
  • 人的梦想 是不会结束的!

    文章目录 前言一 一年之约1 学习嵌入式2 探寻嵌入式之路 二 我的心跳1 奉劝2 行动人的梦想是永远不会结束的 xff01 前言 随着在程序员这条路上不断发展 xff0c 自己学得越多 xff0c 就会感觉自己学的东西有多渺小 下面就说说
  • 记一次centos系统下的串口登陆异常问题

    一 问题概述 在使用centos7 5版本系统时 xff0c 安装配置好官方原版桌面环境后 xff0c 发现通过串口登陆系统出现了问题 具体问题现象有两种情况 xff1a 第一次通过串口输入用户名后 xff0c 输入密码的第一字符 xff0
  • Android Studio中引入Kotlin

    安装Kotlin插件 从Android studio3 0开始我们已经全面支持Kotlin 我们不需要添加Kotlin插件 而在Android2 X xff0c 我们还是需要添加Kotlin插件 Setting gt Plugins中下载k
  • 串口输出乱码问题的解决方法汇总(持续更新):

    平时工作中程序员在调试时总会用到串口打印数据以及一些标志位查看程序是否出现问题 但是在使用时总会遇到各种各样的问题 xff0c 最常见的就是输出乱码问题 xff08 指的是有收到数据但数据显示的是一堆不认识的汉字或字符 xff09 xff0
  • 谈谈技术在日常工作生活中的重要性

    我从事 技术方面 的工作也有10多年了 从最初的一个软件工程师 xff0c 也逐渐成长为项目经理 xff0c 部门经理 无论岗位怎么变换 xff0c 但是我还是没有离开技术方面的工作 xff0c 一直对技术的研究有很大热情 Csdn是非常棒
  • JSP中的网页编写格式——MIME TYPE?

    一 首先 xff0c 我们要了解浏览器是如何处理内容的 在浏览器中显示的内容有 HTML 有 XML 有 GIF 还有 Flash 那么 xff0c 浏览器是如何区分它们 xff0c 决定什么内容用什么形式来显示呢 xff1f 答案是 MI
  • 安卓开发05:Activity之间链接和传递参数

    Activity之间链接和传递参数主要通过Intent安卓的一个对象来实现 首先我们创建一个MainActivity xff1a java view plain copy print package com example androidt