1、使用Intent的putExtra传递
第一个Activity中
//创建Intent对象
Intent intent = new Intent(OneActivity.this,TwoActivity.class);
//设置传递键值对
intent.putExtra("data",str);
//开启TwoActivity
startActivity(intent);
第二个Activity中
//获取Intent对象
Intent intent = getIntent();
//获取传递的值
String str = intent.getStringExtra("data");
//设置值
tv.setText(str);
intent传递数据时,可传递的数据类型有哪些
2、使用Intention的Bundle传递
第一个Activity中
//创建Intent对象
Intent intent = new Intent(MainActivity.this,TwoActivity.class);
//创建Bundle对象用来捆绑传递数据
Bundle bundle = new Bundle();
bundle.putString("String数据", str);
bundle.putInt("Int数据",5);
//把Bundle对象通过putExtra()方法放入intent对象中
intent.putExtra("bun", bundle);
//激活TwoActivity
startActivity(intent);
第二个Activity
//获取Bundle对象
Intent intent = getIntent();
Bundle bundle = intent.getBundleExtra("bun");
//获取数据
String str = bundle.getString("String数据");
int a=bundle.getInt("Int数据")
//设置数据
tv.setText(str);
tv.setText(""+a);
Bundle传递数据时,可传递的数据类型有哪些
3、使用Activity销毁时传递数据
第一个Activity中
Intent intent = new Intent(MainActivity.this,TwoActivity.class);
//用一种特殊方式开启Activity
startActivityForResult(intent, 11); //requestCode ==11
//获取传回的数据
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode ==11 && resultCode ==3){
String str = data.getStringExtra("data");
tvOne.setText(str);
}
}
第二个activity中
//设置返回的数据
Intent intent = new Intent();
intent.putExtra("data", edtOne.getText().toString().trim());
setResult(3, intent); //resultCode==3
//关闭当前activity
finish();
4、SharedPreferences传递数据
第一个Activity中
SharedPreferences sp = this.getSharedPreferences("info", 1);
//获取sp编辑器
Editor edit = sp.edit();
edit.putString("data", str);
edit.commit();
//创建意图对象
Intent intent = new Intent(MainActivity.this,TwoActivity.class);
//激活意图
startActivity(intent);
第二个Activity中
SharedPreferences sp = this.getSharedPreferences("info", 1);
//设置数据
tv.setText(sp.getString("data", ""));
5、使用序列化对象Seriazable
工具类
import java.io.Serializable;
public class DataBean implements Serializable {
private String name;
private int age;
public DataBean() {
}
public DataBean(String name, int age) {
this.name = name;
this.age = 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;
}
}
第一个Activity
DataBean ss=new DataBean("carrie",18);
jump_in_item3.putExtra("数据",ss);
第二个Activity
//反序列化数据对象
Serializable se = intent.getSerializableExtra("数据2");
if(se instanceof DataBean){
//获取到携带数据的DataBean对象db
DataBean db = (DataBean) se;
tv.setText(db.getName());
tv.setText(""+db.getAge());
}
6、使用静态变量传递数据
第一个Activity
Intent intent = new Intent(MainActivity.this,TwoActivity.class);
TwoActivity.name="carrie";
TwoActivity.age=18;
startActivity(intent);
第二个Activity
//静态变量
protected static String name;
protected static int age;
tv.setText(name+age);