Android中intent传递对象和Bundle的用法

android中的组件间传递的对象一般实现Parcelable接口,当然也可以使用java的Serializable接口,前者是android专门设计的,效率更高,下面我们就来实现一个Parcelabel。

1. 创建一个类实现Parcelable接口,具体实现如下:
package com.hebaijun.testparcelable;

import android.os.Parcel;
import android.os.Parcelable;

public class ParcelableData implements Parcelable{
	private String name;
	private int age;
	
	public ParcelableData(){
		name = "guest";
		age = 20;
	}
	
	public ParcelableData(Parcel in){
		//顺序要和writeToParcel写的顺序一样
		name = in.readString();
		age = in.readInt();
	}
	
	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;
	}

	@Override
	public int describeContents() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public void writeToParcel(Parcel dest, int flags) {
		// TODO Auto-generated method stub
		dest.writeString(name);
		dest.writeInt(age);
	}
	
	public static final Parcelable.Creator<ParcelableData> CREATOR = new Parcelable.Creator<ParcelableData>() {
		public ParcelableData createFromParcel(Parcel in) {
		    return new ParcelableData(in);
		}
		
		public ParcelableData[] newArray(int size) {
		    return new ParcelableData[size];
		}
	};

}


2. 通过下面的方法发送对象。Bundle类也实现了Parcelable接口,一般在android中我们是通过Bundle来封装数据并进行传送的。
        Intent intent = new Intent();
        intent.setClass(this, SubActivity.class);
        // 直接添加
        //intent.putExtra("MyData", new ParcelableData());
        
        // 通过Bundle
        Bundle bundle = new Bundle();
        bundle.putString("MyString", "test bundle");
        bundle.putParcelable("MyData", new ParcelableData());
        intent.putExtras(bundle);
        startActivity(intent);


3. 下面的接收对象的方法。
        //ParcelableData parcelableData = getIntent().getParcelableExtra("MyData");
        Bundle bundle = getIntent().getExtras();
        ParcelableData parcelableData = bundle.getParcelable("MyData");
        String testBundleString = bundle.getString("MyString");
        Log.v("string=", testBundleString);
        Log.v("name=", parcelableData.getName());
        Log.v("age=", ""+parcelableData.getAge());


  • 15
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值