一、使用intent傳遞對象
(1)使用serializable接口
persion類
package com.example.jixujinjie; import java.io.Serializable; /** * Created by 海綿寶寶 on 2019/4/25. */ public class Persion implements Serializable{//intent不允許傳遞對象類所以我們把他序列化,繼承Serializab private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
MainActivity中使用Intent傳值
public void onClick(View v) { Persion persion=new Persion(); persion.setAge(18); persion.setName("王懷宇"); Intent intent=new Intent(MainActivity.this,Main2Activity.class); intent.putExtra("persion_mes",persion); startActivity(intent); }
Mian2Activity中接受
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Persion persion=(Persion)getIntent().getSerializableExtra("persion_mes"); TextView textView1=(TextView)findViewById(R.id.T1); TextView textView2=(TextView)findViewById(R.id.T2); textView1.setText("姓名:"+persion.getName()); textView2.setText("年齡:"+persion.getAge()); }
(2)使用parcelable方式
persion類
package com.example.jixujinjie; import android.os.Parcel; import android.os.Parcelable; import java.io.Serializable; /** * Created by 海綿寶寶 on 2019/4/25. */ public class Persion implements Parcelable{//繼承Parcelable private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } //writeToParcel和describeContents是繼承Parcelabel的必須重寫的函數 @Override public int describeContents() { return 0; } //在writeToParcel將類的屬性寫入 @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(age); } //創建一個Creator接口的實現,createFromParcel中將之前寫入的取出,注意順序和之前一致 public static final Parcelable.Creator<Persion> CREATOR=new Parcelable.Creator<Persion>(){ @Override public Persion createFromParcel(Parcel source) { Persion persion=new Persion(); persion.name=source.readString(); persion.age=source.readInt(); return persion; } @Override public Persion[] newArray(int size) { return new Persion[size]; } }; }
Main2Activity.java
package com.example.jixujinjie;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
//獲取方式換成getParcelableExtra
Persion persion=(Persion)getIntent().getParcelableExtra("persion_mes");
TextView textView1=(TextView)findViewById(R.id.T1);
TextView textView2=(TextView)findViewById(R.id.T2);
textView1.setText("姓名:"+persion.getName());
textView2.setText("年齡:"+persion.getAge());
}
}