intent实现Activity之间跳转的各种传值
一、在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<MyClass> arrayList = new ArrayList<MyClass>();
- 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<MyClass> arrayList = (ArrayList<MyClass>) 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 <br>
- * 封装数据的容器,封装后的数据可以通过Intent或IPC传递 <br>
- *
- * Parcelable接口:http://developer.android.com/reference/android/os/Parcelable.html <br>
- * 自定义类继承该接口后,其实例化后能够被写入Parcel或从Parcel中恢复。 <br>
- *
- * 如果某个类实现了这个接口,那么它的对象实例可以写入到 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<MyClass2> CREATOR = new Creator<MyClass2>() {
- //创建出类的实例,并从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<MyClass2> arrayList = new ArrayList<MyClass2>();
- 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<MyClass2> arrayList = (ArrayList<MyClass2>) 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);
复制代码
接收
intent实现Activity之间跳转的各种传值的更多相关文章
- Android之Activity之间跳转
本人自学Android,想到什么就写点什么.主要是怕忘了,哈哈~请观者不要建议~ 今天写点Android窗口之间的跳转以及自己理解: 1.Android中窗口之间的跳转,就是Activity之间的跳转 ...
- 从0系统学Android-2.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之间传值与跳转(转)
转: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 ...
随机推荐
- 一个简单的HTML5摇一摇实例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- python tkinter module的用法
tkinter windows下从python3.2版本之后是自动安装的. python3.3之后的引入方式: >>> import _tkinter>>> imp ...
- 数据挖掘之pandas
sdata={'语文':89,'数学':96,'音乐':39,'英语':78,'化学':88} #字典向Series转化 @@ >>> studata=Series(sdata) & ...
- Struts2实现input数据回显
/** 修改页面 */ public String editUI() { //准备回显得数据 Role role = roleService.getById(id); ...
- cesium学习--初识
一.Cesium 官方介绍:CesiumJS是一个开源的JavaScript库,用于世界级的3D地球仪和地图.任务是为静态和时间动态的内容创建领先的3D地球和地图,具有最好的性能.精度.视觉质量.平台 ...
- python classmethod方法 和 staticmethod
classmethod() 是一个类方法,用来装饰对应的函数.被classmethod 装饰之后就无需实例化,也不需要在函数中传self,但是被装饰的函数第一个参数需要是cls来表示自身类.可以用来调 ...
- 【BZOJ4710】[Jsoi2011]分特产 组合数+容斥
[BZOJ4710][Jsoi2011]分特产 Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同 ...
- CDH使用Solr实现HBase二级索引
一.为什么要使用Solr做二级索引二.实时查询方案三.部署流程3.1 安装HBase.Solr3.2 增加HBase复制功能3.3创建相应的 SolrCloud 集合3.4 创建 Lily HBa ...
- iOS改变UIAlertView、UIActionSheet、UIAlertController系统字体颜色
废话不多说,直接上代码,效果是最好的说服力 1.改变UIAlertView字体颜色 [UIView appearance].tintColor = [UIColor greenColor]; 个人还是 ...
- Tomcat学习笔记【5】--- 项目部署详解
本文主要讲在Tomcat中部署项目的几种方式:静态部署.动态部署. 一 静态部署 静态部署项目有好几种方式,比较典型的有如下4种: 1.1 方式一:将Web项目放到webApps目录下 直接将web项 ...