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 ...
随机推荐
- Oracle 使用TRUNCATE TABLE删除所有行
若要删除表中的所有行,则 TRUNCATE TABLE 语句是一种快速.有效的方法.TRUNCATE TABLE 与不含 WHERE 子句的 DELETE 语句类似.但是,TRUNCATE TABLE ...
- WPF自定义依赖集合属性无法触发更新的问题
通常WPF中通过继承UserControl的来快速创建自定义控件,最近项目上需要设计一个卫星星图显示控件,最终效果如下图所示.完成过程中遇到了自定义集合依赖属性无法触发更新通知的问题,在此记录一下,方 ...
- PHP增加$_ENV变量
在日常开发过程中,我们常常会将一些系统或模块配写在配置文件里.这样便于程序维护与修改.通常的配置文件有.ini , .xml等.配置文件的好处在于:1,便于管理.2,可读性高.但是,使用配置文件也会有 ...
- 转:static关键字的总结
static关键字的总结 C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. ...
- jQuery的Pagenation分页插件。
插件简介 此jQuery插件为Ajax分页插件,一次性加载,故分页切换时无刷新与延迟,如果数据量较大不建议用此方法,因为加载会比较慢. 原插件CSS不太合理,使用浮动,故无法方便实现左右方向的定位,且 ...
- null的比较问题
select count(*) from table_a WHERE status=1 and end_time<now(); 写这个sql的时候有点纠结,万一end_time是null怎么办 ...
- 对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。 给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。
// 第一种方法 // ConsoleApplication10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include < ...
- Microsoft-office 常见问题
1.工作表写入保护,忘记密码,解决办法: 流程如下: 1打开文件2工具---宏----录制新宏---输入名字如:aa3停止录制(这样得到一个空宏)4工具---宏----宏,选aa,点编辑按钮5删除窗口 ...
- GC入门指南(二)------GC工作原理
本系列博客旨在帮助大家理解java垃圾收集器及其工作原理,这是系列的第二篇. java垃圾回收事实上是由一个能够进行自己主动内存管理的进程完毕的,这使得程序猿在写代码的时候不必过多考虑内存释放与回收的 ...
- C - The C Answer (2nd Edition) - Exercise 1-1
/* Run the "hello, world" program on your system. Experiment with leaving out parts of the ...