在activity之间传递数据

一、简介

二、通过intent传递数据

1、在需要传数据的界面调用

intent.putExtra("data1", "我是fry");方法

//前面是键,后面是值,这个是string

2、在需要接受数据的界面调用bundle获取传递过来的数据即可

Bundle bundle = getIntent().getExtras();
String data1=bundle.getString("data1");

如果是string就getString(),int就getString(),什么数据类型的方法都有

3、实例

需要传数据的界面调用

intent.putExtra("data1", "我是fry");

需要接受数据的界面

Bundle bundle = getIntent().getExtras();
String data1=bundle.getString("data1");

data1里面的内容就是:"我是fry"

三、实例

结果图

原理:

在MainActivity页面创建数据,然后用intent.putExtra方法将数据传递给Activity01页面

代码

activityDataSend.MainActivity

 package activityDataSend;

 import com.example.activityDataSend.R;

 import android.app.Activity;
import android.content.Intent;
import android.content.Loader;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class MainActivity extends Activity{
private Button btn_openActivty;//创建一个button对象
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);//父类操作
setContentView(R.layout.activity_main);//引入名为activity_main的界面
btn_openActivty=(Button) findViewById(R.id.btn_openActivity);//找id为btn_openActivity的button
btn_openActivty.setOnClickListener(new OnClickListener() {//设置button点击监听 @Override
public void onClick(View v) {//onclick事件
// TODO Auto-generated method stub
30 Intent intent=new Intent();//初始化intent
31 intent.setClass(MainActivity.this,Activity01.class);//连接
32 //下面这句话用于intent在activity之间传输data
33 intent.putExtra("data1", "我是fry");//前面是键,后面是值,这个是string
34 intent.putExtra("data2", 0.2);//这个是double
35 //传递对象,serializable序列化方式
36 testClass1_serialize class1=new testClass1_serialize("fry1",21);
37 intent.putExtra("data3_obj", class1);
38
39 //传递对象,parcelable序列化方式
40 testClass2_parcelable class2=new testClass2_parcelable("fry2",22);
41 intent.putExtra("data4_obj", class2);
42
43 startActivity(intent);//打开activity

}
});
}
}

activityDataSend.Activity01

 package activityDataSend;

 import com.example.activityDataSend.R;

 import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextClock;
import android.widget.TextView; public class Activity01 extends Activity{
private TextView textView_ans;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity01); textView_ans=(TextView) findViewById(R.id.textView_ans);
22 Bundle bundle = getIntent().getExtras();
23 String data1=bundle.getString("data1");
24 double data2=bundle.getDouble("data2");
25 testClass1_serialize data3_obj=(testClass1_serialize) bundle.get("data3_obj");
26 testClass2_parcelable data4_obj=(testClass2_parcelable) bundle.get("data4_obj");

Log.d("MainActivity",bundle.get("data3_obj")+"\n"+bundle.get("data4_obj"));
System.out.println(bundle.get("data3_obj")+"\n"+bundle.get("data4_obj")); textView_ans.setText("data1: "+data1+"\ndata2: "+data2+"\ndata3_obj: "+data3_obj+"\ndata4_obj: "+data4_obj);
//textView_ans.setText("data1: "+data1+"\ndata2: "+data2+"\ndata4_obj: "+data4_obj);
}
}
Serializable序列化方式

activityDataSend.testClass1_serialize

 package activityDataSend;

 import java.io.Serializable;

 public class testClass1_serialize implements Serializable{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public testClass1_serialize(String name, int age) {
super();
this.name = name;
this.age = age;
}
public testClass1_serialize() {
super();
}
@Override
public String toString() {
return "testClass1_serialize [name=" + name + ", age=" + age + "]";
} }
Parcelable序列化方式
 序列化差不多要自己写
反序列化也要自己写
 

activityDataSend.testClass2_parcelable

 package activityDataSend;

 import android.os.Parcel;
import android.os.Parcelable; /*
* Parcelable序列化方式
* 序列化差不多要自己写
* 反序列化也要自己写
*/
public class testClass2_parcelable implements Parcelable{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public testClass2_parcelable() {
super();
}
public testClass2_parcelable(String name, int age) {
super();
this.name = name;
this.age = age;
} @Override
public String toString() {
return "testClass2_parcelable [name=" + name + ", age=" + age + "]";
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
/*
* 序列化
* (non-Javadoc)
* @see android.os.Parcelable#writeToParcel(android.os.Parcel, int)
*/
@Override
public void writeToParcel(Parcel dest, int flags) {//序列化
// TODO Auto-generated method stub
dest.writeString(name);
dest.writeInt(age);
}
/*
* 反序列化要自己写
*/
public static Parcelable.Creator<testClass2_parcelable> CREATOR=new Creator<testClass2_parcelable>() { @Override
public testClass2_parcelable[] newArray(int size) {
// TODO Auto-generated method stub
return null;
}
/*
* 反序列化
* (non-Javadoc)
* @see android.os.Parcelable.Creator#createFromParcel(android.os.Parcel)
*/
@Override
public testClass2_parcelable createFromParcel(Parcel source) {//反序列化
// TODO Auto-generated method stub
testClass2_parcelable class2=new testClass2_parcelable();
class2.setName(source.readString());
class2.setAge(source.readInt());
return class2;
}
};
}

在activity之间传递数据的更多相关文章

  1. Activity之间传递数据的方式及常见问题总结

    Activity之间传递数据一般通过以下几种方式实现: 1. 通过intent传递数据 2. 通过Application 3. 使用单例 4. 静态成员变量.(可以考虑 WeakReferences) ...

  2. Activity之间传递数据或数据包Bundle,传递对象,对象序列化,对象实现Parcelable接口

    package com.gaojinhua.android.activitymsg; import android.content.Intent; import android.os.Bundle; ...

  3. 28、activity之间传递数据&批量传递数据

    import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android ...

  4. 【Android 复习】 : Activity之间传递数据的几种方式

    在Android开发中,我们通常需要在不同的Activity之间传递数据,下面我们就来总结一下在Activity之间数据传递的几种方式. 1. 使用Intent来传递数据 Intent表示意图,很多时 ...

  5. Android 笔记-Fragment 与 Activity之间传递数据

    Fragment 与 Activity之间传递数据有两种方法.一种是使用setArgument,一种是使用接口回调.以下先学习第一种方法. (1)使用setArgument方法: 为了便于理解,我在这 ...

  6. Android基础 -- Activity之间传递数据(bitmap和map对象)

    原文:http://blog.csdn.net/xueerfei008/article/details/23046341 做项目的时候需要用到在2个activity之间传递一些数据,之前做的都是些字符 ...

  7. android中使用Intent在activity之间传递数据

    android中intent传递数据的简单使用: 1.使用intent传递数据: 首先将需要传递的数据放入到intent中 Intent intent = new Intent(MainActivit ...

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

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

  9. 在不同Activity之间传递数据的四种常用方法

    在Android中传递数据的方法非常多,本次介绍4中比较常用的数据传递方法: 1.通过Intent传递数据 2.通过静态变量(static)传递数据 3.通过剪贴板(Clipboard)传递数据 4. ...

随机推荐

  1. db-mysql-001- 语句备份表

    1.备份表 CREATE TABLE AAbak( SELECT * FROM AA ); 2.两个已存在表导数据 INSERT INTO AAbak(c1,c2) SELECT c1,c2 FROM ...

  2. HTTP中的header头解析说明

    HTTP的头信息比较多,这里根据实际例子作出说明.下面图片是访问 http://kccdzz.com 的一个HTTP请求的header信息,可以看出Headers主要分为Response Header ...

  3. Delphi APP 開發入門(八)SQLite資料庫

    Delphi APP 開發入門(八)SQLite資料庫 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次 ...

  4. 『NiFi 学习之路』把握 —— 架构及主要部件

    一.概述 通过前面几篇文章的学习,相信你对 NiFi 有了一个基础性的了解. 数据处理和分发系统 是什么概念? NiFi 系统中数据的传递方式是怎样的? NiFi 的重要 Processor 有哪些? ...

  5. SVN文件版本太旧问题解决

    错误信息如下: E155036: The working copy at '/Users/...' is too old (format 10) to work with client version ...

  6. 裁剪TOGAF进行产品架构开发

    http://ea.zhoujingen.cn/56.html . 有人和我说“周老师,我的企业条件不适合,学习企业架构没用.” 如果等公司让我用企业架构,估计会比我自己开始晚七八年.我们学习任何内容 ...

  7. Java ArrayList详细介绍和使用示例

    ①对ArrayList的整体认识 ArrayList是一个数组队列,相当于动态数组.与Java中的数组相比,它的容量能动态增长.它继承了AbstractList,实现了List,RandomAcces ...

  8. redis日常操作

    redis针对所有类型的日常操作: keys * ## 取出所有key keys my* ## 模糊匹配 exists name ## 存在name键返回1,否则返回0 del key1 ## 删除一 ...

  9. Twitter的分布式自增ID算法snowflake

    snowflake 分布式场景下获取自增id git:https://github.com/twitter/snowflake 解读: http://www.cnblogs.com/relucent/ ...

  10. F1Book报表在Win7下运行出现显示不完整问题

    Q: Win7环境下,明明报表要显示20多行,可是显示18行,即显示不完全情况(或常常出现报表底部内容不见了,fe:最后的签名或备注消失了)?? A:只要更新Vcf132.ocx即可.       操 ...