Parcelable接口和serializable系列的Activity数据类传递
2014-12-24 12:25
357 查看
Activity之间的数据类传递 Parcelable接口和serializable系列,都是用来在不同界面之间进行类形式的数据交互。
1:Parcelable用法:几个界面之间的传递类数据
* 1:定义的数据类实现接口Parcelable
* 2:重写数据类的 writeToParcel(Parcel arg0, int arg1)方法 用来写入数据
* 3:该数据类必须有一个静态领域 而且静态变量名字必须是CREATOR
* public static final Parcelable.Creator<Data> CREATOR 用来读出写入的数据
Demo:
package com.example.intent_class;
import android.os.Parcel;
import android.os.Parcelable;
/**
* intent的传递类 把该数据类拿来在界面1与界面2之间传递
* @author
*
*/
public class Data implements Parcelable{
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Data(int id, String name)
{
this.id = id;
this.name = name;
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
/**
* 将数据写入Parcel
*/
@Override
public void writeToParcel(Parcel arg0, int arg1) {
// TODO Auto-generated method stub
//将数据写入Parcel里去
arg0.writeInt(id);
arg0.writeString(name);
}
//该静态领域是必须有的 而且静态变量名字必须是CREATOR
public static final Parcelable.Creator<Data> CREATOR=new Parcelable.Creator<Data>(){
@Override
public Data createFromParcel(Parcel arg0) {
// TODO Auto-generated method stub
//将数据从Parcel读出
int num=arg0.readInt();
String str=arg0.readString();
return new Data(num,str);
}
@Override
public Data[] newArray(int arg0) {
// TODO Auto-generated method stub
return null;
}
};
}
serializable系列的用法:
* 1:数据类实现接口Serializable
* 2:数据类需要定义一个private static final long serialVersionUID = 1L;//版本序列号
* 3:完成
Demo2:
package com.example.intent_serializable_class;
import java.io.Serializable;
import android.os.Parcel;
import android.os.Parcelable;
/**
* intent的传递类 把该数据类拿来在界面1与界面2之间传递
* @author LiTing
*
*/
public class Data implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;//版本序列号
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Data(int id, String name)
{
this.id = id;
this.name = name;
}
}
package com.example.intent_serializable_class;
import java.io.Serializable;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
/**
* serializable用法的几个界面之间的传递类数据
* 1:数据尅实现接口Serializable
* 2:数据类需要定义一个private static final long serialVersionUID = 1L;//版本序列号
* 3:完成
* @author
*
*/
public class MainActivity extends Activity {
Intent intent;
Data data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
data=new Data(11,"Data类数据1");
intent=new Intent(MainActivity.this,Activity2.class);
}
public void myclick(View v)
{
Bundle bundle=new Bundle();
bundle.putSerializable("bundle1", data);
intent.putExtra("intent1", bundle);
startActivity(intent);
}
}
1:Parcelable用法:几个界面之间的传递类数据
* 1:定义的数据类实现接口Parcelable
* 2:重写数据类的 writeToParcel(Parcel arg0, int arg1)方法 用来写入数据
* 3:该数据类必须有一个静态领域 而且静态变量名字必须是CREATOR
* public static final Parcelable.Creator<Data> CREATOR 用来读出写入的数据
Demo:
package com.example.intent_class;
import android.os.Parcel;
import android.os.Parcelable;
/**
* intent的传递类 把该数据类拿来在界面1与界面2之间传递
* @author
*
*/
public class Data implements Parcelable{
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Data(int id, String name)
{
this.id = id;
this.name = name;
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
/**
* 将数据写入Parcel
*/
@Override
public void writeToParcel(Parcel arg0, int arg1) {
// TODO Auto-generated method stub
//将数据写入Parcel里去
arg0.writeInt(id);
arg0.writeString(name);
}
//该静态领域是必须有的 而且静态变量名字必须是CREATOR
public static final Parcelable.Creator<Data> CREATOR=new Parcelable.Creator<Data>(){
@Override
public Data createFromParcel(Parcel arg0) {
// TODO Auto-generated method stub
//将数据从Parcel读出
int num=arg0.readInt();
String str=arg0.readString();
return new Data(num,str);
}
@Override
public Data[] newArray(int arg0) {
// TODO Auto-generated method stub
return null;
}
};
}
public class MainActivity extends Activity { Intent intent; Data data; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); data=new Data(11,"Data类数据1"); intent=new Intent(MainActivity.this,Activity2.class); } public void myclick(View v) { Bundle bundle=new Bundle(); bundle.putParcelable("bundle1", data); intent.putExtra("intent1", bundle); startActivity(intent); }
package com.example.intent_class; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.widget.Toast; /** * 界面2 * @author LiTing * */ public class Activity2 extends Activity { Intent intent; Data data; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.view2); //获取从界面1传递来的数据 intent=getIntent(); Bundle bundle=intent.getBundleExtra("intent1"); //得到传递来的数据类 data=bundle.getParcelable("bundle1"); Toast.makeText(this, data.getName(), 0).show(); } public void myclick(View v) { //返回到界面1 intent=new Intent(Activity2.this,MainActivity.class); startActivity(intent); finish(); } }2可以向Bundle放入一个可序化对象 Serializable
serializable系列的用法:
* 1:数据类实现接口Serializable
* 2:数据类需要定义一个private static final long serialVersionUID = 1L;//版本序列号
* 3:完成
Demo2:
package com.example.intent_serializable_class;
import java.io.Serializable;
import android.os.Parcel;
import android.os.Parcelable;
/**
* intent的传递类 把该数据类拿来在界面1与界面2之间传递
* @author LiTing
*
*/
public class Data implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;//版本序列号
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Data(int id, String name)
{
this.id = id;
this.name = name;
}
}
package com.example.intent_serializable_class;
import java.io.Serializable;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
/**
* serializable用法的几个界面之间的传递类数据
* 1:数据尅实现接口Serializable
* 2:数据类需要定义一个private static final long serialVersionUID = 1L;//版本序列号
* 3:完成
* @author
*
*/
public class MainActivity extends Activity {
Intent intent;
Data data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
data=new Data(11,"Data类数据1");
intent=new Intent(MainActivity.this,Activity2.class);
}
public void myclick(View v)
{
Bundle bundle=new Bundle();
bundle.putSerializable("bundle1", data);
intent.putExtra("intent1", bundle);
startActivity(intent);
}
}
package com.example.intent_serializable_class; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.widget.Toast; /** * 界面2 * @author * */ public class Activity2 extends Activity { Intent intent; Data data; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.view2); //获取从界面1传递来的数据 intent=getIntent(); Bundle bundle=intent.getBundleExtra("intent1"); //得到传递来的serializable数据类 data=(Data) bundle.getSerializable("bundle1"); Toast.makeText(this, data.getName(), 0).show(); } public void myclick(View v) { //返回到界面1 intent=new Intent(Activity2.this,MainActivity.class); startActivity(intent); finish(); } }
相关文章推荐
- Android开发:使用序列化接口Parcelable、Serializable实现Activity间传递复杂数据类型参数
- Android开发:使用序列化接口Parcelable、Serializable实现Activity间传递复杂数据类型参数
- 使用序列化接口Parcelable、Serializable实现Activity间传递复杂数据类型参数
- Activity之间数据传递 Parcelable和Serializable接口的使用
- Android开发:使用序列化接口Parcelable、Serializable实现Activity间传递复杂数据类型参数
- android Activity之间数据传递 Parcelable和Serializable接口的使用
- 两个Activity之间传递数据的全部方法以及Parcelable接口的用法
- android: activity之间传递复杂数据类型[使用Serializable序列化或者Parcelable序列化]
- Android学习札记13:为什么更推荐使用Parcelable来在Activity间传递数据,而不是Serializable?
- android Activity之间数据传递 Parcelable和Serializable接口的使用
- android Activity之间数据传递 Parcelable和Serializable接口的使用
- Parcelable和Serializable(一)--利用Serializable在Activity之间传递自定义对象
- Android Activity之间数据传递 Parcelable和Serializable接口详解
- Android中Parcelable接口跨进程传递复杂数据的应用
- Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
- android activity之间传递对象(Serializable 和 Parcelable)
- 详解android Activity之间数据传递 Parcelable&Serializable
- Parcelable和Serializable(二)--利用Parcelable在Activity之间传递自定义对象
- Android中的数据传递之Parcelable接口
- 接口对象Android中Intent传递对象的两种方法(Serializable,Parcelable)