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 ...
随机推荐
- 手把手实现andriod应用增量升级
近期研究了android应用增量升级的应用.当中用到了android NDK编程,先说下为什么要使用增量升级.当我们的应用达到一定大小的时候,比方眼下有30M.假设新版本号35M仅仅是添加了几个功能, ...
- jQuery Validate(三)
这里,我们再说说radio.checkbox.select的验证方式. 1.用新版的写法进行验证. <!DOCTYPE html> <html> <head> &l ...
- 【selenium+python】自动化测试目录与文件结构
一.首先,看一下完整的项目目录结构图,如下: ==================目录结构================== ==================目录结构============== ...
- javaScript 深层复制
在工作中遇到了深浅复制的问题,所以详细总结一下: 深复制和浅复制只针对像 Object, Array 这样的复杂对象的.简单来说,浅复制只复制一层对象的属性,而深复制则递归复制了所有层级. var o ...
- PowerBuilder -- 条码打印
# 使用ocx控件 使用微软的MSBCODE9.OCX,但是注册老不成功,需要安装office之后才能注册成功,不知道有没有好的处理方法?? # 使用字体 字体下载:http://download.c ...
- ASP.NET动态网站制作(1)--html
前言:正式上课的第一课,讲的是前端部分的最基础内容:html. 前端:html,css,js 数据库:sql server 动态部分:.net,c#... IIS(Internet Informati ...
- Unity3D研究院之拓展自定义编辑器窗口
Unity支持自行创建窗口,也支持自定义窗口布局.在Project视图中创建一个Editor文件夹,在文件夹中在创建一条脚本. 自定义窗口需要让脚本继承EditorWindow在设置MenuItem, ...
- 点击textbox弹出对话框,返回弹出对话框的值
主要是在父页面使用 function PopupWindow() { window.open(url, "", "status=no,resizab ...
- python 基础 6.2 raise 关键字使用
一. raise 关键字 raise 用来触发异常 语法如下: raise[Exception [,args [,traceback]]] 语句中Exception 是异常 ...
- Java 学习 day04
17-数组(概述-内存结构) 概念:同一种类型数据的集合,其实数组就是一个容器. 可以自动给数组中的元素从0开始编号,方便操作这些元素. int[] x = new int[3]; 01-数组(静态初 ...