方法4. 把基本的数据类型封装到一个对象中,然后通过intent传递该对象
需要考虑对Person对象进行序列化
MainActivity:
package com.example.day06_activity4; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void btn_click(View view) { Intent intent = new Intent(); intent.setClass(MainActivity.this, OtherActivity.class); // 创建一个Person对象,并通过intent传递到OtherActivity Person person = new Person("志明", 40, 333.3); intent.putExtra("person", person); startActivity(intent); } }
OtherActivity:
package com.example.day06_activity4; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; public class OtherActivity extends Activity { private TextView textview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_other); textview = (TextView) findViewById(R.id.text); // 获得intent Intent intent = getIntent(); Person person = intent.getParcelableExtra("person"); String name = person.getName(); int age = person.getAge(); double weight = person.getWeight(); textview.setText("姓名:" + name + ", 年龄:" + age + ", 体重:" + weight); } }
Person
package com.example.day06_activity4; import android.os.Parcel; import android.os.Parcelable; public class Person implements Parcelable { private String name; private int age; private double weight; public Person() { } public Person(String name, int age, double weight) { super(); this.name = name; this.age = age; this.weight = weight; } // getXxx()方法和setXxx()方法 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; } public double getWeight() { return weight; } public void setWeight(double weight) { this.weight = weight; } // 实现Parcelable接口中的抽象方法 // describeContents()方法基本上直接返回0,就可以了 public int describeContents() { return 0; } // 把需要序列化的参数写入out中 public void writeToParcel(Parcel out, int flags) { out.writeString(name); out.writeInt(age); out.writeDouble(weight); } // 定义一个静态的属性CREATOR 是Parcelable.Creator的对象 // 在该匿名内部类中,实现Parcelable.Creator中的两个方法(泛型参数为类名) public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() { // createFromParcel(Parcel in) // 对in进行反序列化(需要通过Person的构造器实现) public Person createFromParcel(Parcel in) { return new Person(in); } // newArray(Parcel in) // 反序列化多个元素时使用 public Person[] newArray(int size) { return new Person[size]; } }; // 定义私有的构造器 从in中反序列对应的参数(反序列化参数的顺序必须与序列化参数的顺序保持一致) private Person(Parcel in) { name = in.readString(); age = in.readInt(); weight = in.readDouble(); } }
时间: 2024-10-12 10:14:04