Android Activity之间实现数据(对象,对象集合)传递
2017-06-16 20:36
351 查看
Android Activity之间实现数据传递是一项非常重要的技术,今天我就来讲一讲如何实现数据传递:
1.基本数据传递
MainActivity.java
ThinkActivity.java(接收数据页面)
当然,这适用于数据不多的情况,如果一个页面数据量较大,用上面的方式就有点麻烦了,下面我们将一个新的方式
MainActivity.java
ThinkActivity.java(接收数据页面)
2.传递对象
我们先新建一个实体类Person.java,因为Android在进行对象传递的时候需要序列化,所以实体类需要先实现Parcelable接口,并且重写其中的方法
Person.java
MainActivity.java
ThinkActivity.java
3.传递对象集合
MainActivity.java
ThinkActivity.java
1.基本数据传递
MainActivity.java
Intent intent=new Intent(this,ThinkActivity.class);//ThinkActivity.class参数是你需要将数据传递的目标页面 //传递基本数据类型 intent.putExtra("uname","张三"); intent.putExtra("uage",18);
ThinkActivity.java(接收数据页面)
String uname=getIntent().getStringExtra("uname");//接收MainActivity传递过来的数据 int uage=getIntent().getIntExtra("uage",0);//参数0是当uage为null时uage的默认值为0
当然,这适用于数据不多的情况,如果一个页面数据量较大,用上面的方式就有点麻烦了,下面我们将一个新的方式
MainActivity.java
//传递Bundle(集装箱),将我们需要传递的数据全部放入集装箱,然后直接将集装箱传递到目标页面 Bundle bundle=new Bundle(); bundle.putString("uname","张三"); bundle.putInt("uage",18); intent.putExtra("bundle",bundle);
ThinkActivity.java(接收数据页面)
//接收bundle Bundle bundle=getIntent().getBundleExtra("bundle"); String uname=bundle.getString("uname"); int uage=bundle.getInt("uage");
2.传递对象
我们先新建一个实体类Person.java,因为Android在进行对象传递的时候需要序列化,所以实体类需要先实现Parcelable接口,并且重写其中的方法
Person.java
package com.zhangkai.entity; import android.os.Parcel; import android.os.Parcelable; /** * Created by Administrator on 2017/6/16 0016. */ public class Person implements Parcelable{ private int pid; private String pname; private int page; public Person(){ } //将对象属性反序列化然后读取出来,注意属性的顺序必须按照序列化属性的顺序 protected Person(Parcel in) { pid = in.readInt(); pname = in.readString(); page = in.readInt(); } public static final Creator<Person> CREATOR = new Creator<Person>() { @Override public Person createFromParcel(Parcel in) { return new Person(in); } @Override public Person[] newArray(int size) { return new Person[size]; } }; @Override public int describeContents() { return 0; } //将对象属性进行序列化 @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(pid); dest.writeString(pname); dest.writeInt(page); } public Person(int pid, String pname, int page) { this.pid = pid; this.pname = pname; this.page = page; } public int getPid() { return pid; } public void setPid(int pid) { this.pid = pid; } public String getPname() { return pname; } public void setPname(String pname) { this.pname = pname; } public int getPage() { return page; } public void setPage(int page) { this.page = page; } @Override public String toString() { return "Person{" + "pid=" + pid + ", pname='" + pname + '\'' + ", page=" + page + '}'; } }
MainActivity.java
//传递对象 Person person1=new Person(1,"李四",19); intent.putExtra("persons",person1);
ThinkActivity.java
//接收对象 Person person=getIntent().getParcelableExtra("persons"); tv_think_showName.setText(person.toString());
3.传递对象集合
MainActivity.java
Person person1=new Person(1,"静静",19); Person person2=new Person(2,"明明",19); Person person3=new Person(3,"雷雷",19); ArrayList<Person> persons=new ArrayList<>(); persons.add(person1); persons.add(person2); persons.add(person3); //传递对象集合 intent.putParcelableArrayListExtra("persons",persons);
ThinkActivity.java
//接收对象集合 List<Person> persons=getIntent().getParcelableArrayListExtra("persons"); for (Person person : persons) { tv_think_showName.setText(tv_think_showName.getText()+" "+persons.toString());//将对象集合设置到文本域 }
相关文章推荐
- Android判断网络状态是否断开+Android完全关闭应用程序+ 本文讲述了Android中不同Activity之间的数据传递 — Bundle对象的实现(-)+Android中Bundle的使用示例
- 【Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用】的改进!
- Android基础 -- Activity之间传递数据(bitmap和map对象)
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- Android成长之路-关于bundle实现两个activity之间的数据传递
- Android: 用Intent实现Activity之间数据传递
- 2014-10-25Android学习--------activity之间批量传递数据----Bundle类的实现
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- Android基础 -- Activity之间传递数据(bitmap和map对象)
- Bundle对象实现不同Activity之间数据传递
- Android入门篇四:使用剪切板在Activity之间传递对象数据
- 不同Activity之间传递数据--Bundle对象和startActivityForResult方法的实现
- 借助Intent实现Android工程中Activity之间Java对象的传递——实现Serializable接口
- Android笔记三.不同Activity之间的传递数据(Bundle对象的使用)
- Ex3.10 不同Activity之间的数据传递——Bundle对象的实现
- android初步实现Activity之间的跳转和数据传递
- android 开发手记 activity 之间数据的传递 intent 对象的使用
- activity和activity之间传递数据(字符串、集合、对象)
- Android中级教程之(五)----->不同Activity之间的数据传递,Bundle对象的使用!
- android中传递复杂参数,activity之间和fragment之间的bundle传递集合/对象