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 ...
随机推荐
- Linux ps 命令查看进程启动及运行时间
引言 同事问我怎样看一个进程的启动时间和运行时间,我第一反应当然是说用 ps 命令啦.ps aux或ps -ef不就可以看时间吗? ps aux选项及输出说明 我们来重新复习下ps aux的选项,这是 ...
- 【Wechall.net挑战】Anderson Application Auditing
Wechall.net是一个国外用于练习CTF和攻防的网站,国内资料writeup不多,只有个别几篇.作为小白,近日玩了几道有意思的题目,在此分享 题目地址:http://www.wechall.ne ...
- HDFS源码分析之DataXceiverServer
DataXceiverServer是Hadoop分布式文件系统HDFS的从节点--数据节点DataNode上的一个后台工作线程,它类似于一个小型的服务器,被用来接收数据读写请求,并为每个请求创建一个工 ...
- 搜狐新闻APP是如何使用HUAWEI DevEco IDE快速集成HUAWEI HiAI Engine
6月12日,搜狐新闻APP最新版本在华为应用市场正式上线啦! 那么,这一版本的搜狐新闻APP有什么亮点呢? 先抛个图,来直接感受下—— 模糊图片,瞬间清晰! 效果杠杠的吧. 而藏在这项神操作背后的 ...
- IdentityServer4 + SignalR Core +RabbitMQ 构建web即时通讯(一)
IdentityServer4 + SignalR Core +RabbitMQ 构建web即时通讯 前言 .net core 2.1已经正式发布了,signalr core1.0随之发布,是时候写个 ...
- 华为基于策略划分VLAN的配置方法及示例
学过思科交换机的朋友,可能对基于策略划分VLAN的配置方法印象非常深,感觉确实比较复杂,先要配置VMPS以及VMPS数据库,但在华为交换机中,这种现象得到了彻底改变,因为它有了一种特殊的端口类型—— ...
- android菜鸟学习笔记4----android项目结构
src: 应用程序源代码存放目录 gen: 自动生成的目录,目录中存放所有由Android开发工具自动生成的文件. 目录中最重要的就是R.java文件. 这个文件由Android开发工具自动产生的.A ...
- c++ get the pointer from the reference
int x = 5; int& y = x; int* xp = &x; int* yp = &y; xp is equal to yp. 也就是说,直接对reference取 ...
- Bootstrap aggregating Bagging 合奏 Ensemble Neural Network
zh.wikipedia.org/wiki/Bagging算法 Bagging算法 (英语:Bootstrap aggregating,引导聚集算法),又称装袋算法,是机器学习领域的一种团体学习算法. ...
- 如果数据需要被多个应用程序消费的话,推荐使用 Kafka,如果数据只是面向 Hadoop 的,可以使用 Flume
https://www.ibm.com/developerworks/cn/opensource/os-cn-kafka/index.html Kafka 与 Flume 很多功能确实是重复的.以下是 ...