Intent 传递对象和集合

两个Activity跳转的时候,相互之间传递对象数据,这种需求还是比较常见的,本文实现了在开启新Activity的同时传递对象参数。

如果对序列化和反序列化不太理解,可以参考这篇文章<java序列化和反序列化的简单理解>

首先是效果图:

废话不多说直接展示代码

1.SendActivity.java的内容:

public class SendActivity extends Activity implements OnClickListener {

	Button btn_serializable;
	Button btn_parcelable;
	Button btn_sendList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_send);
        btn_serializable = (Button) findViewById(R.id.btn_serializable);
        btn_parcelable = (Button) findViewById(R.id.btn_parcelable);
        btn_sendList =  (Button) findViewById(R.id.btn_sendList);
        btn_serializable.setOnClickListener(this);
        btn_parcelable.setOnClickListener(this);
        btn_sendList.setOnClickListener(this);
    }

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.btn_serializable:
			sendSerializableObject();
			break;
		case R.id.btn_parcelable:
			sendParcelableObject();
			break;
		case R.id.btn_sendList:
			sendSerializableList();
			break;
		default:
			break;
		}
	}

	private void sendSerializableObject(){
		Intent intent = new Intent(this,ReceiveSerActivity.class);
		UserBySerializable user = new UserBySerializable();
		user.setUserName("张三");
		user.setPassword(19940306);
//		Bundle bundle = new Bundle();
//		bundle.putSerializable("user", user);
//		intent.putExtras(bundle);
		intent.putExtra("user", user);
		startActivity(intent);
	}

	private void sendParcelableObject(){
		Intent intent = new Intent(this,ReceiveParActivity.class);
		UserByParcelable user = new UserByParcelable();
		user.setUserName("李四");
		user.setPassword(19930708);
//		Bundle bundle = new Bundle();
//		bundle.putParcelable("user", user);
//		intent.putExtras(bundle);
		intent.putExtra("user", user);
		startActivity(intent);
	}

	private void sendSerializableList(){
		Intent intent = new Intent(this,ReceiveListActivity.class);
		List<UserBySerializable> list = new ArrayList<UserBySerializable>();
		UserBySerializable user01 = new UserBySerializable();
		user01.setUserName("一号成员");
		user01.setPassword(10000001);
		list.add(user01);
		UserBySerializable user02 = new UserBySerializable();
		user02.setUserName("二号成员");
		user02.setPassword(10000002);
		list.add(user02);
		UserBySerializable user03 = new UserBySerializable();
		user03.setUserName("三号成员");
		user03.setPassword(10000003);
		list.add(user03);
		intent.putExtra("userList", (Serializable)list);
		startActivity(intent);
	}
}

2.UserBySerializable对象:

public class UserBySerializable implements Serializable {
	private static final long serialVersionUID = -7060210544600464481L;
    private String userName;
    private int password;
    public void setUserName(String value)
    {
        userName = value;
    }
    public String getUserName()
    {
        return userName;
    }
	public int getPassword() {
		return password;
	}
	public void setPassword(int password) {
		this.password = password;
	}
}

3.UserByParcelable对象

public class UserByParcelable implements Parcelable {
    private String userName;
    private int password;    

    public void setUserName(String value)
    {
        userName = value;
    }
    public String getUserName()
    {
        return userName;
    }  

    public int getPassword() {
		return password;
	}
	public void setPassword(int password) {
		this.password = password;
	}

	public static final Parcelable.Creator<UserByParcelable> CREATOR = new Creator<UserByParcelable>() {
        public UserByParcelable createFromParcel(Parcel source) {
        	UserByParcelable mUser = new UserByParcelable();
            mUser.userName = source.readString();
            mUser.password = source.readInt();
            return mUser;
        }
        public UserByParcelable[] newArray(int size) {
            return new UserByParcelable[size];
        }
    };  

    public int describeContents() {
        return 0;
    }
    public void writeToParcel(Parcel parcel, int flags) {
        parcel.writeString(userName);
        parcel.writeInt(password);
    }
}

这是最需要注意的三个部分,其余部分就不展示出来了,直接给大家Demo源码自己研究一下吧!点击打开链接

时间: 2024-08-03 04:47:49

Intent 传递对象和集合的相关文章

Android Intent传递对象和集合

Article article = JsonUtils.getArticle(content); intent = new Intent(activity, CompositionCorrect.class); Bundle bundle = new Bundle(); bundle.putSerializable("ARTICLE", article); intent.putExtras(bundle); startActivity(intent); 获取传递的对象 private

Intent传递简单对象与集合

我们在Intent传递传递对象,可以有三种方式,实现Serializable接口.实现Parcelable接口,使用json格式序列化与反序列化. 在此我们使用第二方式,现实Parcelable接口,实现Parcelable需要以下操作. 1.writeToParcel 方法:该方法将类的数据写入外部提供的Parcel中. 2.describeContents 方法:返回内容描述信息的资源ID. 3.静态的Parcelable.Creator接口,本接口有以下方法两方法: 3.1 createF

android#使用Intent传递对象

参考自<第一行代码>——郭霖 Intent的用法相信你已经比较熟悉了,我们可以借助它来启动活动.发送广播.启动服务等.在进行上述操作的时候,我们还可以在Intent中添加一些附加数据,以达到传值的效果,比如在FirstActivity中添加如下代码: Intent intent = new Intent(FirstActivity.this, SecondActivity.class); intent.putExtra("string_data", "hello&

使用Intent传递对象

我们可以借助Intent来启动活动,发送广播,启动服务等. 还可以通过putExtra()方法传递一些数据. 但我们会发现putExtra()方法中所支持的类型是有限的.当我们想去传递一些自定义对象的时候,会发现无法通过putExtra()的方法进行传递. 但Intent是可以传递对象的. 使用Intent传递对象的通常有两种方式 Serializable 和 Parcelable. Serializable方式 Serializable是序列化的意思,表示将一个对象转换成可存储或可传输的状态.

Intent传递对象——Serializable和Parcelable区别

前两篇文章讨论了Serializable和Parcelable实现Intent之间传递对象和对象数组的方式,两种方法实现上相似,效果一致,怎么选择用哪种方法实现呢? Intent在不同的组件中传递对象数据的应用非常普遍.下面介绍两种通过Intent传递对象的方法. 1.实现Serializable接口 2.实现Parcelable接口 为什么要将对象序列化? 1.永久性保存对象,保存对象的字节序列到本地文件中: 2.用过序列化对象在网络中传递对象: 3.通过序列化对象在进程间传递对象. 1.实现

Android Intent传递对象小结

效果: 想看实例的,感兴趣的可以看之前的一篇文章 Android ViewPager Fragment实现选项卡 部分关键代码: public class SerializeActivity extends Activity implements Serializable { Button btnlist, btnParcelable, btnSerialze; private final String TAG = "SerializeActivity"; public final s

Intent传递对象的几种方式

原创文章,转载请注明 http://blog.csdn.net/leejizhou/article/details/51105060 李济洲的博客 Intent的用法相信你已经比较熟悉了,Intent可以用来启动Activity,Service等等,同时我们也可以通过Intent来进行传递数据,比如以下代码 Intent intent=new Intent(MainActivity.this,OtherActivity.class); intent.putExtra("name",&q

Intent传递对象——Serializable和Parcelable差别

前两篇文章讨论了Serializable和Parcelable实现Intent之间传递对象和对象数组的方式.两种方法实现上相似,效果一致,怎么选择用哪种方法实现呢? Intent在不同的组件中传递对象数据的应用很普遍.以下介绍两种通过Intent传递对象的方法. 1.实现Serializable接口 2.实现Parcelable接口 为什么要将对象序列化? 1.永久性保存对象,保存对象的字节序列到本地文件里. 2.用过序列化对象在网络中传递对象: 3.通过序列化对象在进程间传递对象. 1.实现S

Android 全局获取 Context 与使用 Intent 传递对象

=====================全局获取 Context======================== Android 开发中很多地方需要用到 Context,比如弹出 Toast.启动活动.发送广播.操作数据库…… 由于很多操作都是在活动中进行的,而活动本身就是一个 Context 对象,所以获取 Context 并不是那么困难. 但是,当应用程序的架构逐渐开始复杂起来的时候,很多的逻辑代码都将脱离 Activity 类,由此在某些情况下,获取 Context 并非那么容易. An