一、在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也可用。
    具体看代码吧,比较简单。

  1. public class MyClass implements Serializable{
  2. private static final long serialVersionUID = 1L;
  3. public String userName;
  4. public String psw;
  5. public int age;
  6. }

复制代码

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

  1. findViewById(R.id.send_arraylist_button).setOnClickListener(new Button.OnClickListener() {
  2. @Override
  3. public void onClick(View v) {
  4. // TODO Auto-generated method stub
  5. ArrayList<MyClass> arrayList = new ArrayList<MyClass>();
  6. for (int i = 0; i < 10; i++) {
  7. MyClass myClass = new MyClass();
  8. myClass.userName = "a" + i;
  9. myClass.psw = "b" + i;
  10. myClass.age = 10 + i;
  11. arrayList.add(myClass);
  12. }
  13. Intent intent = new Intent();
  14. intent.putExtra("key", arrayList);
  15. intent.setClass(MainActivity.this, ResultActivity.class);
  16. startActivity(intent);
  17. }
  18. });

复制代码

一个Activity中传递。

  1. ArrayList<MyClass> arrayList = (ArrayList<MyClass>) getIntent().getSerializableExtra("key");
  2. String result = "" ;
  3. for (MyClass myClass : arrayList) {
  4. result += myClass.userName + "--" + myClass.psw + "--" + myClass.age + "\n";
  5. }
  6. ((TextView)findViewById(R.id.show_result_textview)).setText(result);

复制代码

另一个Activity中接收

2. 使用Parcelable 方法
  Android内存受限,迫使其封装了Parcel容器来替代Serializable方法。
  代码中做了一些注释,这里就不再解释了。

  1. /**
  2. * Parcel类:http://developer.android.com/reference/android/os/Parcel.html <br>
  3. * 封装数据的容器,封装后的数据可以通过Intent或IPC传递 <br>
  4. *
  5. * Parcelable接口:http://developer.android.com/reference/android/os/Parcelable.html <br>
  6. * 自定义类继承该接口后,其实例化后能够被写入Parcel或从Parcel中恢复。 <br>
  7. *
  8. * 如果某个类实现了这个接口,那么它的对象实例可以写入到 Parcel 中,并且能够从中恢复,
  9. * 并且这个类必须要有一个 static 的 field ,并且名称要为 CREATOR ,这个 field 是某个实现了 Parcelable.Creator 接口的类的对象实例。
  10. */
  11. public class MyClass2 implements Parcelable{
  12. public String userName;
  13. public String psw;
  14. public int age;
  15. //静态的Parcelable.Creator接口
  16. public static final Parcelable.Creator<MyClass2> CREATOR = new Creator<MyClass2>() {
  17. //创建出类的实例,并从Parcel中获取数据进行实例化
  18. public MyClass2 createFromParcel(Parcel source) {
  19. MyClass2 myClass2 = new MyClass2();
  20. myClass2.userName = source.readString();
  21. myClass2.psw = source.readString();
  22. myClass2.age = source.readInt();
  23. return myClass2;
  24. }
  25. public MyClass2[] newArray(int size) {
  26. // TODO Auto-generated method stub
  27. return new MyClass2[size];
  28. }
  29. };
  30. //
  31. @Override
  32. public int describeContents() {
  33. // TODO Auto-generated method stub
  34. return 0;
  35. }
  36. //将数据写入外部提供的Parcel中
  37. @Override
  38. public void writeToParcel(Parcel dest, int flags) {
  39. // TODO Auto-generated method stub
  40. dest.writeString(userName);
  41. dest.writeString(psw);
  42. dest.writeInt(age);
  43. }
  44. }

复制代码

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

  1. //use Parcelable
  2. findViewById(R.id.send_arraylist_button).setOnClickListener(new Button.OnClickListener() {
  3. @Override
  4. public void onClick(View v) {
  5. // TODO Auto-generated method stub
  6. ArrayList<MyClass2> arrayList = new ArrayList<MyClass2>();
  7. for (int i = 0; i < 10; i++) {
  8. MyClass2 myClass2 = new MyClass2();
  9. myClass2.userName = "a" + i;
  10. myClass2.psw = "b" + i;
  11. myClass2.age = 10 + i;
  12. arrayList.add(myClass2);
  13. }
  14. Intent intent = new Intent();
  15. intent.putParcelableArrayListExtra("key", arrayList);
  16. intent.setClass(MainActivity.this, ResultActivity.class);
  17. startActivity(intent);
  18. }
  19. });

复制代码

发送

  1. //use Parcelable
  2. ArrayList<MyClass2> arrayList = (ArrayList<MyClass2>) getIntent().getSerializableExtra("key");
  3. String result = "" ;
  4. for (MyClass2 myClass2 : arrayList) {
  5. result += myClass2.userName + "--" + myClass2.psw + "--" + myClass2.age + "\n";
  6. }
  7. ((TextView)findViewById(R.id.show_result_textview)).setText(result);

复制代码

接收

intent实现Activity之间跳转的各种传值的更多相关文章

  1. Android之Activity之间跳转

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

  2. 从0系统学Android-2.3使用 Intent 在 Activity 之间穿梭

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

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

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

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

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

  5. 使用Intent实现Activity之间传值与跳转(转)

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

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

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

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

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

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

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

  9. Android Intent实现页面之间跳转

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

随机推荐

  1. setTimeout()基础/setInterval()基础

    JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成.它们向任务队列添加定时任务.初始接触它的人都觉得好简单 ...

  2. 浅谈js中的MVC

    MVC是什么? MVC是一种架构模式,它将应用抽象为3个部分:模型(数据).视图.控制器(分发器) 本文将用一个经典的例子todoList来展开 一个事件发生的过程(通信单向流动): 1.用户在视图V ...

  3. VueJS自定义全局和局部指令

    除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令. 使用directive自定义全局指令 下面我们注册一个全局指令 v-focus, 该指令的功能是在页面 ...

  4. ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借

    ASP.NET MVC深入浅出系列(持续更新)   一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...

  5. CSS3 实现背景透明,文字不透明,兼容所有浏览器

    <!DOCTYPE html><html><head><meta charset="utf-8"><title>opac ...

  6. 使用OpenGL进行Mandelbrot集的可视化

    Mandelbrot集是哪一集?? Mandelbrot集不是哪一集!! 啊不对-- Mandelbrot集是哪一集!! 好像也不对-- Mandelbrot集是数集!! 所以--他不是一集而是数集? ...

  7. 设置mysql隔离级别

    1.查看当前会话隔离级别 select @@tx_isolation; 2.查看系统当前隔离级别 select @@global.tx_isolation; 3.设置当前会话隔离级别 set sess ...

  8. Erlang的系统限制

    Erlang本身对进程数,原子长度等没有限制,但为了提高性能和节省内存,总会在实际实现中和运行环境中作出一些限制. 1.进程数量 缺省情况下同时存在的最大Erlang进程数量不超过2^18=26214 ...

  9. 关于海康视频采集卡的简介---基于pci的插潮采集卡

    vga 640x480 qvga vga的1/4,宽高分别是vga的一半 (1)采集类型 海康威视 DS-2CE16A2P-IT3P 700TVL 1/3" DIS ICR 红外防水筒型摄像 ...

  10. 《Programming WPF》翻译 第4章 5.主从复合(Master-Detail)绑定

    我们已经看到绑定一个单独的对象,还看到绑定一个单独的对象列表.另一种非常流行的方式是绑定多个对象列表,尤其是相关的列表.例如,如果你向用户显示一个客户列表,当他们选中其中一个客户,就会显示客户的相关订 ...