Activity之间传值的六种方式

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//关闭当前activityfinish();

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对象dbDataBean 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);


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部