一、在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);

复制代码

接收

最新文章

  1. 利用for循环找出1000以内的质数
  2. iOS之17个提升iOS开发效率的必用工具
  3. javascript序列化json 第二篇
  4. 对依赖倒置原则(DIP)及Ioc、DI、Ioc容器的一些理解
  5. 高效开发 Android App 的 10 个建议(转)
  6. CSU-ACM2016暑假集训训练2-DFS(C - Network Saboteur)
  7. Qt零基础教程(四) QWidget详解篇
  8. 安装MYSQL出现的问题
  9. Android Studio如何引用jar包裹(不gradle)
  10. 【Android Developers Training】 7. 添加Action Buttons
  11. ABP+AdminLTE+Bootstrap Table权限管理系统第一节--使用ASP.NET Boilerplate模板创建解决方案
  12. 解决MAVEN项目因achetype加载太慢的问题
  13. .Net Core 部署在win10 的IIS上注意问题。
  14. textarea--去掉空格的办法
  15. 控制请求重复提交的方法总结(Token)
  16. git常用命令总结以及用github来展示你的前端页面
  17. 【python】统一转换日期格式dateutil.parser.parse
  18. ORM的多表查询详述
  19. uniGUI中Cookies使用中文汉字的方法(使用EncodeString函数编码)
  20. Spring Boot 进行Bean Validate和Method Validate

热门文章

  1. VueJS自定义过滤器:new Vue({filters:{filter1:function(){}....}})
  2. java 中的CountDownLatch
  3. 不安装Oracle客户端也能使用PL/SQL
  4. Maven一大坑——缓存
  5. 有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0-&gt;1-&gt;2(删除)-&gt;3-&gt;4-&gt;5(删除)-&gt;6-&gt;7-&gt;0(删除),如此循环直到最后一个数被删除。
  6. HDFS源码分析EditLog之获取编辑日志输入流
  7. ClassNotFoundException Log
  8. 自动化测试,基于selenium/appnium 学习
  9. RTSP转RTMP-HLS网页无插件视频直播-EasyNVR功能介绍-音频开启
  10. ABAP HTTP POST