关于Activity之间传递数据的6种方式

来源:互联网 发布:手机淘宝店标制作教程 编辑:程序博客网 时间:2024/05/29 07:23

使用Inten的putExtra传递

第一个Activity中
  1. //创建意图对象
  2. Intent intent = new Intent(this,TwoActivity.class);
  3. //设置传递键值对
  4. intent.putExtra("data",str);
  5. //激活意图
  6. startActivity(intent);
第二个Activity中
  1. // 获取意图对象
  2. Intent intent = getIntent();
  3. //获取传递的值
  4. String str = intent.getStringExtra("data");
  5. //设置值
  6. tv.setText(str);

使用Intention的Bundle传递

第一个Activity中
  1. //创建意图对象
  2. Intent intent = new Intent(MainActivity.this,TwoActivity.class);
  3. //用数据捆传递数据
  4. Bundle bundle = new Bundle();
  5. bundle.putString("data", str);
  6. //把数据捆设置改意图
  7. intent.putExtra("bun", bundle);
  8. //激活意图
  9. startActivity(intent);
第二个Activity
  1. //获取Bundle
  2. Intent intent = getIntent();
  3. Bundle bundle = intent.getBundleExtra("bun");
  4. String str = bundle.getString("data");
  5. tv.setText(str);

使用Activity销毁时传递数据

第一个Activity中
  1. Intent intent = new Intent(MainActivity.this,TwoActivity.class);
  2. //用一种特殊方式开启Activity
  3. startActivityForResult(intent, 11);
  4. //设置数据
  5. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  6. super.onActivityResult(requestCode, resultCode, data);
  7. String str = data.getStringExtra("data");
  8. tvOne.setText(str);
  9. }
第二个activity中
  1. //设置返回的数据
  2. Intent intent = new Intent();
  3. intent.putExtra("data", edtOne.getText().toString().trim());
  4. setResult(3, intent);
  5. //关闭当前activity
  6. finish();

SharedPreferences传递数据

第一个Activity中
  1. SharedPreferences sp = this.getSharedPreferences("info", 1);
  2. //获取sp编辑器
  3. Editor edit = sp.edit();
  4. edit.putString("data", str);
  5. edit.commit();
  6. //创建意图对象
  7. Intent intent = new Intent(MainActivity.this,TwoActivity.class);
  8. //激活意图
  9. startActivity(intent);
第二个Activity中
  1. SharedPreferences sp = this.getSharedPreferences("info", 1);
  2. //设置数据
  3. tv.setText(sp.getString("data", ""));

使用序列化对象Seriazable

工具类
  1. import java.io.Serializable;
  2. class DataBean implements Serializable {
  3. private String name;
  4. private String sex;
  5. public String getName() {
  6. return name;
  7. }
  8. public void setName(String name) {
  9. this.name = name;
  10. }
  11. public String getSex() {
  12. return sex;
  13. }
  14. public void setSex(String sex) {
  15. this.sex = sex;
  16. }
  17. }
第一个Activity
  1. //创建意图
  2. Intent intent = new Intent(MainActivity.this,TwoActivity.class);
  3. DataBean bean = new DataBean();
  4. //通过set方法把数据保存到DataBean对象中
  5. bean.setName("啦啦");
  6. bean.setSex("男");
  7. intent.putExtra("key", bean);
  8. startActivity(intent);
第二个Activity
  1. Intent intent = getIntent();
  2. //反序列化数据对象
  3. Serializable se = intent.getSerializableExtra("key");
  4. if(se instanceof DataBean){
  5. //获取到携带数据的DataBean对象db
  6. DataBean db = (DataBean) se;
  7. tv.setText(db.getName()+"==="+db.getSex());
  8. }

使用静态变量传递数据

第一个Activity
  1. Intent intent = new Intent(MainActivity.this,TwoActivity.class);
  2. TwoActivity.name="牛逼";
  3. TwoActivity.str="你说";
  4. startActivity(intent);
第二个Activity
  1. //静态变量
  2. protected static Stringname;
  3. protected static Stringstr;
  4. tv.setText(str+name);

1 0