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 ...
随机推荐
- java中的值传递和引用传递区别
值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响 ...
- 【甘道夫】Ubuntu14 server + Hadoop2.2.0环境下Sqoop1.99.3部署记录
第一步.下载.解压.配置环境变量: 官网下载sqoop1.99.3 http://mirrors.cnnic.cn/apache/sqoop/1.99.3/ 将sqoop解压到目标文件夹,我的是 /h ...
- 在Mac OS X中下载Android源代码的一些经验
首先说明.随着最近(2014年6月開始)GFW的升级.这个站点:http://www.android.com/ 已经不能正常訪问了,以下的这些操作均是在我连接VPN的时候进行的. 首先,须要做一些准备 ...
- Socket的UDP协议在erlang中的实现
现在我们看看UDP协议(User Datagram Protocol,用户数据报协议).使用UDP,互联网上的机器之间可以互相发送小段的数据,叫做数据报.UDP数据报是不可靠的,这意味着如果客户端发送 ...
- java 单例模式(转载)
http://www.cnblogs.com/whgw/archive/2011/10/05/2199535.html Java中单例模式是一种常见的设计模式,可分为三种:懒汉式单例.饿汉式单例.登记 ...
- 【文献阅读】Augmenting Supervised Neural Networks with Unsupervised Objectives-ICML-2016
一.Abstract 从近期对unsupervised learning 的研究得到启发,在large-scale setting 上,本文把unsupervised learning 与superv ...
- 【转】android 签名验证防止重打包
网上资料很多,这里只做一个笔记反编译 dex 修改重新打包签名后 apk 的签名信息肯定会改变,所以可以在代码中判断签名信息是否被改变过,如果签名不一致就退出程序,以防止 apk 被重新打包. 1 j ...
- 微信小程序TabBar的使用
一.TabBar使用步骤 1.创建所需要的界面和所需要的图片: 2.配置文件: 我们找到项目根目录中的配置文件 app.json 加入如下配置信息 "tabBar": { &quo ...
- EasyPusher进行Android UVC外接摄像头直播推送实现方法
最近EasyPusher针对UVC摄像头做了适配.我们结合了UVCCamera与EasyPusher,支持将UVC摄像头的视频推送到RTSP服务器上.在此特别感谢UVCCamera这个牛逼的项目! 来 ...
- python cookbook第三版学习笔记九:函数
接受任意数量参数的函数. 当传入函数的参数个数很多的时候,在函数定义的时候不需要为每一个参数定义一个变量,可以用*rest的方式来包含多余的参数. 如下面的代码,*rest包含了2,3,4这3个参数. ...