- 使用Intent
- Intent是Android中用于不同组件之间的通信机制,它可以用来启动Activity、Service或发送广播等。
- 在Intent中可以通过putExra()方法添加额外数据,然后在目标Activity中使用getIntent().getXXXExtrA()方法来获取这些数据。
- 优点:简单直观,适用于传递简单数据类型实现了Serializable/Parcelable接口对象。
- 缺点:对于复杂数据的传递可能不是最高效的方式。
- 代码演示:
我有两个Activity,发送方Activity
Intent intent = new Intent(MainActivity.this, ActivityA.class);
intent.putExtra("String","这是一个字符串类型的数据");
intent.putExtra("Intage",100);
startActivity(intent);
接收方代码
String stringValue = intent.getStringExtra("String");
int intageValue = intent.getIntExtra("Intage", 0);
Toast.makeText(this, stringValue+intageValue, Toast.LENGTH_SHORT).show();
使用Intent接收一个对象
新建一个对象
public class User implements Serializable {
private String name;
private int age;
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;
}
}
发送端代码
User user = new User();
user.setName("Anglin");
user.setAge(22);
Intent intent = new Intent(MainActivity.this, MainActivity2.class);
intent.putExtra("String", "这是一个String类型的字符串");
intent.putExtra("Intage", 100);
intent.putExtra("user",user);
startActivity(intent);
接收端代码
Intent intent = getIntent();
String stringValue = intent.getStringExtra("String");
int intage = intent.getIntExtra("Intage", 0);
User user = (User) intent.getSerializableExtra("user");
Toast.makeText(this, stringValue+intage+user.getName()+user.getAge(), Toast.LENGTH_SHORT).show();