android intent实现activity之间跳转并传值,intent实现Activity之间跳转的各种传值

本文详细介绍了在Android中如何使用Intent进行Activity间的跳转以及不同类型数据(如String, ArrayList<Serializable>)的传递。通过示例代码展示了如何在点击事件中传递String类型数据,以及如何使用Serializable和Parcelable方式传递ArrayList数据。" 121983752,11642563,MATLAB图像处理:ROI选择与应用,"['图像处理', '计算机视觉', 'MATLAB']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、在Activity之间传递String类型的数据

传递

@Override

public void onClick(View v) {

String num1 = firstNum.getText().toString();

String num2 = secondNum.getText().toString();

Intent intent = new Intent();

intent.putExtra("one", num1);

intent.putExtra("two", num2);

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

startActivity(intent);

}

接收

Intent intent = getIntent();

String num1 = intent.getStringExtra("one");

String num2 = intent.getStringExtra("two");

int ret = Integer.parseInt(num1) + Integer.parseInt(num2);

result.setText(ret+"");

二、在Activity之间传递ArrayList类型的数据

1. 使用 Serializable 方法

将类的实例序列化然后再做存储或者传输在JAVA中较为常见,在Android也可用。

具体看代码吧,比较简单。

public class MyClass implements Serializable{

private static final long serialVersionUID = 1L;

public String userName;

public String psw;

public int age;

}

复制代码

一个自定义类,实现Serializable接口。

findViewById(R.id.send_arraylist_button).setOnClickListener(new Button.OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

ArrayList arrayList = new ArrayList();

for (int i = 0; i < 10; i++) {

MyClass myClass = new MyClass();

myClass.userName = "a" + i;

myClass.psw = "b" + i;

myClass.age = 10 + i;

arrayList.add(myClass);

}

Intent intent = new Intent();

intent.putExtra("key", arrayList);

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

startActivity(intent);

}

});

复制代码

一个Activity中传递。

ArrayList arrayList = (ArrayList) getIntent().getSerializableExtra("key");

String result = "" ;

for (MyClass myClass : arrayList) {

result += myClass.userName + "--" + myClass.psw + "--" + myClass.age + "\n";

}

((TextView)findViewById(R.id.show_result_textview)).setText(result);

复制代码

另一个Activity中接收

2. 使用Parcelable 方法

Android内存受限,迫使其封装了Parcel容器来替代Serializable方法。

代码中做了一些注释,这里就不再解释了。

/**

* Parcel类:http://developer.android.com/reference/android/os/Parcel.html

* 封装数据的容器,封装后的数据可以通过Intent或IPC传递

*

* Parcelable接口:http://developer.android.com/reference/android/os/Parcelable.html

* 自定义类继承该接口后,其实例化后能够被写入Parcel或从Parcel中恢复。

*

* 如果某个类实现了这个接口,那么它的对象实例可以写入到 Parcel 中,并且能够从中恢复,

* 并且这个类必须要有一个 static 的 field ,并且名称要为 CREATOR ,这个 field 是某个实现了 Parcelable.Creator 接口的类的对象实例。

*/

public class MyClass2 implements Parcelable{

public String userName;

public String psw;

public int age;

//静态的Parcelable.Creator接口

public static final Parcelable.Creator CREATOR = new Creator() {

//创建出类的实例,并从Parcel中获取数据进行实例化

public MyClass2 createFromParcel(Parcel source) {

MyClass2 myClass2 = new MyClass2();

myClass2.userName = source.readString();

myClass2.psw = source.readString();

myClass2.age = source.readInt();

return myClass2;

}

public MyClass2[] newArray(int size) {

// TODO Auto-generated method stub

return new MyClass2[size];

}

};

//

@Override

public int describeContents() {

// TODO Auto-generated method stub

return 0;

}

//将数据写入外部提供的Parcel中

@Override

public void writeToParcel(Parcel dest, int flags) {

// TODO Auto-generated method stub

dest.writeString(userName);

dest.writeString(psw);

dest.writeInt(age);

}

}

复制代码

一个自定义类,注释中又说明,看代码。

//use Parcelable

findViewById(R.id.send_arraylist_button).setOnClickListener(new Button.OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

ArrayList arrayList = new ArrayList();

for (int i = 0; i < 10; i++) {

MyClass2 myClass2 = new MyClass2();

myClass2.userName = "a" + i;

myClass2.psw = "b" + i;

myClass2.age = 10 + i;

arrayList.add(myClass2);

}

Intent intent = new Intent();

intent.putParcelableArrayListExtra("key", arrayList);

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

startActivity(intent);

}

});

复制代码

发送

//use Parcelable

ArrayList arrayList = (ArrayList) getIntent().getSerializableExtra("key");

String result = "" ;

for (MyClass2 myClass2 : arrayList) {

result += myClass2.userName + "--" + myClass2.psw + "--" + myClass2.age + "\n";

}

((TextView)findViewById(R.id.show_result_textview)).setText(result);

复制代码

接收

Android之Activity之间跳转

本人自学Android,想到什么就写点什么.主要是怕忘了,哈哈~请观者不要建议~ 今天写点Android窗口之间的跳转以及自己理解: 1.Android中窗口之间的跳转,就是Activity之间的跳转 ...

从0系统学Android-2&period;3使用 Intent 在 Activity 之间穿梭

2.3 使用 Intent 在 Activity 之间穿梭 在上一节中我们已经学会了如何创建一个 Activity 了.对于一个应用程序来说,肯定不可能只有一个 Activity.下面就来学习多个 A ...

【Android基础】利用Intent在Activity之间传递数据

前言: 上一篇文章给大家聊了Intent的用法,如何用Intent启动Activity和隐式Intent,这一篇文章给大家聊聊如何利用Intent在Activity之间进行沟通.   从一个Activ ...

安卓--使用Intent实现Activity之间传值与跳转

http://blog.csdn.net/cjjky/article/details/6337447 在一个Android的应用程序中,很少只存在一个Activity,一般都有多个Activity,如 ...

使用Intent实现Activity之间传值与跳转&lpar;转&rpar;

转:http://blog.csdn.net/cjjky/article/details/6337447 在一个Android的应用程序中,很少只存在一个Activity,一般都有多个Activity ...

Android:Activity之间跳转和参数传递

一个activity就好比一个网页,此文章讲解怎样创建一个activity并且实现跳转! 一.学习创建Activity 1.新建一个java类,右击src目录,选择new-->class,新的a ...

android入门:activity之间跳转,并且回传参数

介绍:         两个activity进行跳转,在跳转过程中,将message由MainActivity传递到secondActivity,并且当secondActivity退回至MainAct ...

安卓开发-intent在Activity之间数据传递

安卓开发-intent在Activity之间数据传递 [TOC] intent实现普通跳转 使用intent的setclass方法,示例(由此界面跳转到NewActivity界面) //使用setOn ...

Android Intent实现页面之间跳转

什么是IntentIntent可以理解为信使(意图)由Intent来协助完成Android各个组件之间的通讯Intent实现页面逐渐的跳转1.startActivity(inetnt)2.startA ...

随机推荐

IDEA 中scala 程序运行时的错误:报错 test is already defined as object test

解决办法:在 创建main文件夹和scala文件夹的时候,注意src与这两个文件夹不能同时设置为resources,否则就会产生报错,解决办法将src文件夹的resources取消,右键.

靶形数独(codevs 1174)

1174 靶形数独 2009年NOIP全国联赛提高组  时间限制: 4 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Descri ...

Solr常用查询语法笔记

1.常用查询 q - 查询字符串,这个是必须的.如果查询所有*:* ,根据指定字段查询(Name:张三 AND Address:北京) fq - (filter query)过虑查询,作用:在q查询符 ...

HDU-4511 小明系列故事——女友的考验 floyd变种-标号递增最短路

题意:给定N个点,现在要求出从1号点到N号点的最短路.题目给的限制条件就是对于某条路径是不能够走的,但是可以选择某段路径走,另外就是所走的路径的标号必须是递增的. 分析:由于给定的是一些列的坐标点,这 ...

ARM学习笔记5——程序状态寄存器

当前程序状态寄存器CPSR可以在任何位处理器模式下被访问,它包含条件码标志.中断控制.当前处理器模式以及其他状态和控制信息.CPSR的结构图如下: 一.条件标志位 CPSR最高4位:N(Negativ ...

log4j日志输出使用教程

Log4j是帮助开发人员进行日志输出管理的API类库.它最重要的特点就可以配置文件灵活的设置日志信息的优先级.日志信息的输出目的地以及日志信息的输出格式.Log4j除了可以记录程序运行日志信息外还有一 ...

&lbrack;HeadFirst-HTMLCSS入门&rsqb;&lbrack;第九章盒模式&rsqb;

新属性 line-height 行间距 line-height: 1.6em; border 边框 属性值 solid 实线 double 双实线 groove 一个槽 outset 外凸 inset ...

Java学习之System&period;arraycopy&lpar;&rpar;方法

java.lang.System的静态方法arraycopy()可以实现数组的复制,讲课的老师说这个方法效率比较高,如果数组有成千上万个元素,那么用这个方法,比用for语句循环快不少.System提供 ...

html5后台界面

Binary Admin Save Binary Admin is 100% free for personal & commercial use under MIT license. Liv ...

为何PS出的RSS总和大于实际物理内存

使用ps  aux  查看系统进程时,第六列即 RSS列显示的就是进程使用的物理内存. 可是把系统所有进程的该列相加时,得到的总和又远远高于系统实际的物理内存?这到底是怎么回事呢? 看一看linux是 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值