您的位置:首页 > 移动开发 > Android开发

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

2017-01-12 11:29 531 查看
原地址:http://blog.csdn.net/lixiang0522/article/details/8642202

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

1. 创建一个类实现Parcelable接口,具体实现如下:

[java] view
plain copy

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来封装数据并进行传送的。

[java] view
plain copy

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. 下面的接收对象的方法。

[java] view
plain copy

//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());  

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息