直接代码不罗嗦
传递数据
public class MainActivity extends Activity {
private EditText username, password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
username = (EditText) this.findViewById(R.id.username);
password = (EditText) this.findViewById(R.id.password);
}
//ooclick 方法
public void login(View view) {
Intent intent = new Intent(this, Main2Activity.class);
String name = username.getText().toString();
String pass = password.getText().toString();
// intent.putExtra("username", name);
// intent.putExtra("password", pass);
// Bundle 数据传递
Bundle bundle = new Bundle();// 其实是对hashmap的封装
bundle.putString("username", name);
bundle.putString("password", pass);
intent.putExtras(bundle);
// 实现Parcel接口传递 对象
Person person = new Person(100, "张三", 26);
intent.putExtra("Person", person);
// 序列化传递对象
User user = new User(101, "小杨同学", 25);
intent.putExtra("User", user);
startActivity(intent);
}
}
接收数据
public class Main2Activity extends Activity {
private TextView message;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity2_main);
super.onCreate(savedInstanceState);
message = (TextView) this.findViewById(R.id.message);
String username = "";
String password = "";
Intent intent = getIntent();
// String username = intent.getStringExtra("username");
// String password = intent.getStringExtra("password");
// 获取Bundle 数据
Bundle bundle = intent.getExtras();
username = bundle.getString("username");
password = bundle.getString("password");
Person person=intent.getParcelableExtra("Person");
User user=(User) intent.getSerializableExtra("User");
message.setText(
"用户名:" + username + "==密码:" + password
+ "\n Person对象" +person.toString()
+"\n User 对象" +user.toString());
}
}
1、实现Parcelable接口
public class Person implements Parcelable {
private int id;
private String name;
private int age;
@Override
public int describeContents() {
return 0;
}
/**
* 把数据写入到Parcel对象
*/
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeString(name);
dest.writeInt(age);
}
public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() {
// 从Parcel对象里读取数据
public Person createFromParcel(Parcel in) {
return new Person(in);
}
public Person[] newArray(int size) {
return new Person[size];
}
};
/**
* 读取的数据类型要和写入的数据类型相对应
*
* @param in
*/
private Person(Parcel in) {
id = in.readInt();
name = in.readString();
age = in.readInt();
}
public Person(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public Person(){}
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
2、实现Serializable接口
public class User implements Serializable {
private static final long serialVersionUID = 5232357154831253356L;
private int id;
private String name;
private int age;
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}