Android Bundle传递数据

时间:2020-12-06 23:35:36

1.传递普通数据

                Intent intent=new Intent(MainActivity.this,TwoActivity.class);
Bundle bundle=new Bundle();
bundle.putString("name","张三");
bundle.putInt("age",18);
bundle.putString("gender","男");
intent.putExtras(bundle);
startActivity(intent);

获取传递的数据

        Bundle bundle=getIntent().getExtras();
String name=bundle.getString("name");
String gender=bundle.getString("gender");
int age =bundle.getInt("age");

2.传递Serializable数据

1.创建一个类实现Serializable

2.传递数据

                Intent intent=new Intent(MainActivity.this,TwoActivity.class);
Bundle bundle=new Bundle();
Person1 p1=new Person1("张三","男",18);
bundle.putSerializable("person",p1);
intent.putExtras(bundle);
startActivity(intent);

3.接受数据

        Bundle bundle=getIntent().getExtras();
Person1 p1= (Person1) bundle.getSerializable("person");
String name=p1.getName();
String gender=p1.getGender();
int age =p1.getAge();

3.传递Parcelable数据

1.创建类实现Parcelabel

public class Person3 implements Parcelable {
private String name;
private String gender;
private int age; public Person3(String name, String gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
} public String getName() {
return name;
} public String getGender() {
return gender;
} public int getAge() {
return age;
} @Override
public String toString() {
return "Person3{" +
"name='" + name + '\'' +
", gender='" + gender + '\'' +
", age=" + age +
'}';
} public static final Parcelable.Creator<Person3> CREATOR=new Parcelable.Creator<Person3>(){ /**
* 供外部类反序列话本类数组使用
* @param source
* @return
*/ @Override
public Person3 createFromParcel(Parcel source) {
return new Person3(source);
} /**
* 从Parcel中读取数据
* @param size
* @return
*/
@Override
public Person3[] newArray(int size) {
return new Person3[size];
}
}; /**
* 默认返回0就行
* @return
*/
@Override
public int describeContents() {
return 0;
} /**
* 把值写进Parcel中
* @param dest
* @param flags
*/
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeString(gender);
dest.writeInt(age);
} /**
* 这里的读取数据必须与writeToParacel(Parcel dest,int flags)一致,否则就会出错
* @param source
*/
public Person3(Parcel source) {
name = source.readString();
gender=source.readString();
age = source.readInt();
}
}

2.传递数据

                Intent intent=new Intent(MainActivity.this,TwoActivity.class);
Bundle bundle=new Bundle();
Person3 p3=new Person3("张三","男",18);
bundle.putParcelable("person",p3);
intent.putExtras(bundle);
startActivity(intent);

3.接受数据

     Bundle bundle=getIntent().getExtras();
Person3 p3= bundle.getParcelable("person");
String name=p3.getName();
String gender=p3.getGender();
int age =p3.getAge();

Android Bundle传递数据的更多相关文章

  1. android bundle存放数据详解

    转载自:android bundle存放数据详解 正如大家所知道,Activity之间传递数据,是将数据存放在Intent或者Bundle中 例如: 将数据存放倒Intent中传递: 将数据放到Bun ...

  2. Bundle传递数据,Handler更新UI

    Bundle主要用于传递数据:它保存的数据,是以key-value(键值对)的形式存在的. Bundle经常使用在Activity之间或者线程间传递数据,传递的数据可以是boolean.byte.in ...

  3. Android Bundle传递简单数据、对象数据

    Android开发过程中进程遇到组件之间.进程之间等数据的传递,数据传递有非常多种,当中使用Bundle传递非常方便. Bundle能够传递多种数据,是一种类似map的key-value数据结构 简单 ...

  4. Android之间传递数据包

    在Android中 ,我们知道,两个activity之间通讯要用到Intent类,传递简单数据的方式我们也已经知道了.那么,如何在两个activity之间传递数据包呢,这就要用到我们的Bundle类了 ...

  5. 关于Android中传递数据的一些讨论--备用

    在Android中编写过程序的开发人员都知道.在Activity.Service等组件之间传递数据(尤其是复杂类型的数据)很不方便.一般可以使用Intent来传递可序列化或简单类型的数据.看下面的代码 ...

  6. 关于Android中传递数据的一些讨论

    在Android中编写过程序的开发人员都知道.在Activity.Service等组件之间传递数据(尤其是复杂类型的数据)很不方便.一般可以使用Intent来传递可序列化或简单类型的数据.看下面的代码 ...

  7. Android开发—— 传递数据

    一:使用静态变量传递数据 (1)静态变量传递数据,在目标Activity中声明静态变量,然后使用setText()方法将静态变量的值导出即可: (2)静态变量传递数据,在主Activity中对目标Ac ...

  8. Android Intent传递数据

    刚开始看郭大神的<>,实现以下里面的一些例子.Intent传递数据. 我们利用显示的方式进行Intent的启动. 1.启动intent并输入数据. Intent intent=new In ...

  9. Android Activity传递数据使用getIntent&lpar;&rpar;接收不到,揭秘Intent传递数据与Activity启动模式singleTask的关系。

    activity通过intent传递数据的时候,如果activity未启动,那么在这个刚启动的activity里通过getIntent()会获取到这个intent的数据.. 如果要启动的activit ...

随机推荐

  1. Ubantu【第一篇】&colon;Ubantu中openssh连接

    h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...

  2. Sql 触发器禁用和启用

    --启用or禁用指定表所有外键约束 alter table tbname NOCHECK constraint all alter table tbname CHECK constraint all ...

  3. 【C语言入门教程】2&period;2 常量 与 变量

    2.2 常量 与 变量 顾名思义,常量是运算中不能改变数值的数据类型,变量是可改变数值的数据类型.根据需要,可将一些在程序中不必改变数值的类型定义为常量,这样也可避免因修改数值造成程序错误.任何改变常 ...

  4. study

    1.perf, top, vtune, /sys/kernel/debug/mid_pmu_states使用 2.cpu hotplug 3.camera record时有可能耗电的地方: 硬件加速是 ...

  5. SPOJ ARCTAN &lpar;数论&rpar; Use of Function Arctan

    详细的题解见这里. 图片转自上面的博客 假设我们已经推导出来x在处取得最小值,并且注意到这个点是位于两个整点之间的,所以从这两个整数往左右两边枚举b就能找到b+c的最小值. 其实只用往一边枚举就够了, ...

  6. 第一个ServiceStack程序

    1. https://github.com/ServiceStack/ServiceStack/wiki/Create-your-first-webservice 2. http://tech.pro ...

  7. UITextField和一个UILabel绑定 浅析

    转载自:http://fengdeng.github.io/blog/2016/01/22/rxswift-dao-di-%5B%3F%5D-ge-uitextfieldshi-ru-he-he-%5 ...

  8. Asp&period;net mvc 知多少(九)

    本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...

  9. 201521123093 java 第二周学习总结

    201521123093 <java程序设计> 第二周学习总结 一.第二周学习总结 答:(1)关于进一步使用码云管理代码,本周才真正学会了如何将Eclipse里的代码上传到码云中,并且能够 ...

  10. Get Docker CE for CentOS

    To get started with Docker CE on CentOS, make sure you meet the prerequisites, then install Docker. ...