一、在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.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 ...
随机推荐
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除了可以记录程序运行日志信息外还有一 ...
[HeadFirst-HTMLCSS入门][第九章盒模式]
新属性 line-height 行间距 line-height: 1.6em; border 边框 属性值 solid 实线 double 双实线 groove 一个槽 outset 外凸 inset ...
Java学习之System.arraycopy()方法
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是 ...