class Student implements Serializable{ 直接實現介面 private static final long serialVersionUID = -1811479799107069425L; String name; public Student(String name) { this.name=name; } @Override public String toString() { return name; } } class Elephant implements Parcelable{ 實現Parcelable後,重寫方法 private String name; private int age; public Elephant(String name,int age) { this.name=name; this.age=age; } //還原序列化 public Elephant(Parcel source){ this.name=source.readString(); this.age=source.readInt(); } @Override public String toString() { return name+"/"+age; } @Override public int describeContents() { // TODO Auto-generated method stub return 0; } /**序列化*/ @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(age); } //藉助此對象實現還原序列化操作 public static final Creator<Elephant> CREATOR= new Creator<Elephant>() { //還原序列化 @Override public Elephant createFromParcel(Parcel source) { return new Elephant(source); } @Override public Elephant[] newArray(int size) { // TODO Auto-generated method stub return new Elephant[size]; } }; } public class MainActivity extends Activity { private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView=(ImageView) findViewById(R.id.imageView1); } public void onClick01(View v){ Intent intent=new Intent(this,OtherActivity01.class); intent.putExtra("flag01", true); Bundle b=new Bundle();//key/value b.putBoolean("flag02",false); b.putString("flag03", "helloworld"); intent.putExtra("data", b); //可以封裝序列化對象 intent.putExtra("student",new Student("陳靜")); intent.putExtra("elephant",new Elephant("大象",100)); startActivity(intent); } private Button btn; public void onClick02(View v){ btn=(Button)v; startActivityForResult( new Intent(this,OtherActivity02.class),100);//100表示請求碼(標識這是哪個請求) } //通過startActivityForResult方法啟動的activity //在關閉時會執行此方法 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Log.i("TAG", "resultCode="+resultCode); if(requestCode==100&&resultCode==200){ String item=data.getStringExtra("itemKey"); btn.setText(item); }else if(requestCode==101){ Bundle bundle=data.getExtras(); //bundle.keySet(); Bitmap bitMap=(Bitmap)bundle.get("data"); imageView.setImageBitmap(bitMap); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId()==R.id.cap){ //啟動相機程式 startActivityForResult( new Intent(MediaStore.ACTION_IMAGE_CAPTURE), 101); } return super.onOptionsItemSelected(item); } } |