from : http://blog.sina.com.cn/s/blog_5033827f0101jmmi.html
传递class类型:
write的时候:
objBean.setBitmap((Bitmap) in.readParcelable(Bitmap.class.getClassLoader()));
read的时候:
in.writeParcelable(objBean.getBitmap(), PARCELABLE_WRITE_RETURN_VALUE);
引用原文:
android 用Parcelable传递复杂数据类型
activity_main.xml外部引用 原始文档
1 2 3 4 5 6 7 8 9101112131415161718
//主界面布局只有一个button,用来跳转到另外一个activity xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" >
another.xml外部引用 原始文档
1 2 3 4 5 6 7 8 91011121314151617181920212223
//接收复杂数据类型的activity的布局文件,这里主要是接收一个Bitmap对象 xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > android:id="@+id/imgview" android:layout_width="100dp" android:layout_height="100dp" android:contentDescription="@string/hello_world" android:paddingLeft="10dp" android:paddingRight="10dp" /> android:id="@+id/txtview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/imgview" android:paddingBottom="10dp" android:textColor="#CC0033" android:textSize="16dp" />
ObjBean.java外部引用 原始文档
1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738
//创建一个bean类package com.example.passobjdemo;import android.graphics.Bitmap;public class ObjBean { private int id; private String name; private double price; private Bitmap bitmap; 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 double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public Bitmap getBitmap() { return bitmap; } public void setBitmap(Bitmap bitmap) { this.bitmap = bitmap; } public String toString() { return "id=" + id + ", name=" + name + ", price=" + price; }}
ParcelableUtil.java外部引用 原始文档
1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
package com.example.passobjdemo;import android.graphics.Bitmap;import android.os.Parcel;import android.os.Parcelable;public class ParcelableUtil implements Parcelable { private ObjBean objBean; public ObjBean getObjBean() { return objBean; } public ParcelableUtil(ObjBean objBean) { super(); this.objBean = objBean; } private ParcelableUtil(Parcel in) { objBean = new ObjBean(); objBean.setId(in.readInt()); objBean.setName(in.readString()); objBean.setPrice(in.readDouble()); objBean.setBitmap((Bitmap) in.readParcelable(Bitmap.class.getClassLoader())); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel in, int flags) { in.writeInt(objBean.getId()); in.writeString(objBean.getName()); in.writeDouble(objBean.getPrice()); in.writeParcelable(objBean.getBitmap(), PARCELABLE_WRITE_RETURN_VALUE); } public static final Parcelable.Creator<</span>ParcelableUtil> CREATOR = new Parcelable.Creator<</span>ParcelableUtil>() { @Override public ParcelableUtil createFromParcel(Parcel source) { return new ParcelableUtil(source); } @Override public ParcelableUtil[] newArray(int size) { return new ParcelableUtil[size]; } };}
MainActivity.java外部引用 原始文档
1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738394041424344454647
package com.example.passobjdemo;import java.io.InputStream;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity implements OnClickListener{ private Button sendobj; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sendobj = (Button) findViewById(R.id.sendobj); sendobj.setOnClickListener(this); } @Override public void onClick(View v) { if (v.getId() == R.id.sendobj) { ObjBean bean = new ObjBean(); bean.setId(1); bean.setName("Android smart Phone"); bean.setPrice(999.99); InputStream is = getResources().openRawResource(R.raw.amz); Bitmap bit = BitmapFactory.decodeStream(is); bean.setBitmap(bit); ParcelableUtil pUtil = new ParcelableUtil(bean); Intent intent = new Intent(MainActivity.this, AnotherActivity.class); intent.putExtra("objbean", pUtil);//将ParcelableUtil对象put到intent中 startActivity(intent); } }}
AnotherActivity.java外部引用 原始文档
1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233
package com.example.passobjdemo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.widget.ImageView;import android.widget.TextView;public class AnotherActivity extends Activity { private ImageView imgView; private TextView txtView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.another); imgView = (ImageView) findViewById(R.id.imgview); txtView = (TextView) findViewById(R.id.txtview); Intent intent = getIntent(); //获取从mainactivity传过来的ParcelableUtil对象 ParcelableUtil pu = (ParcelableUtil) intent.getParcelableExtra("objbean"); ObjBean bean = pu.getObjBean(); //显示值 imgView.setImageBitmap(bean.getBitmap()); txtView.setText(bean.getName() + "\n" + bean.getPrice()); }}
360手机助手截图1210_15_33_01.png外部引用 原始文档
360手机助手截图1210_15_33_02.png外部引用 原始文档