第一种方法:
发送数据:
Intent i=new Intent(TransmitData.this,GetData.class);
i.putExtra("data","Hello world");
startActivity(i);
接收数据:
Intent i=getIntent();
String data = i.getStringExtra("data");
第二种方法:利用Bundle传递基本数据
发送数据:
Intent i=new Intent(TransmitData.this,GetData.class);
Bundle b=new Bundle();
b.putString("name","zhangsan");
b.putInt("password",123);
i.putExtras(b);
startActivity(i);
接收数据:
Intent i=getIntent();
Bundle b=i.getExtras();
String name = b.getString("name");
int password = b.getInt("password");
第三种:传递实体类数据:
发送数据:
需要注意的是:实体类必须继承那两个方法,不能强转,强转会报错
Intent i=new Intent(TransmitData.this,GetData.class);
//需要实体类实现Serializable或者Parcelable接口。这里使用的是Serializable,因为bean类不用去实现方法,交由系统进行序列化
i.putExtra("data", new User("zhangsan",123));
startActivity(i);
接收数据:
Intent i=getIntent();
User user= (User) i.getSerializableExtra("data");
实体类代码:
public class User implements Serializable {
private String name;
private int password;
public User(String name, int password) {
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPassword() {
return password;
}
public void setPassword(int password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", password=" + password +
'}';
}
}
第四种:用一个activity打开另一个activity,请求返回数据到第一个activity
请求数据:这里用的是一个按钮打开一个页面
Intent i=new Intent(TransmitData.this,GetData.class);
//想要另一个activity能返回数据,必须使用这个方法
//第二个参数是:请求码。
startActivityForResult(i,0);
处理返回的数据方法,在第一个activity加上这个方法。这里是将返回的数据设置了文本
/**
* 用于接收activity返回的数据
* @param requestCode 请求码
* @param resultCode 状态码
* @param data 返回的数据
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
tv_one.setText(""+data.getStringExtra("data"));
}
返回数据:这里用一个按钮加一个输入栏,将输入栏的数据返回。
btn_one.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i=new Intent();
i.putExtra("data",et_one.getText().toString());
//设置返回值:
//第一个参数是状态码:任意填,一般是为了标记成功或失败。
//第二个参数是Intent能充当数据的载体,这里是为了返回数据
setResult(1,i);
//结束activity
finish();
}
});