如何在两个Activity之间传递数据?
2015-10-10 20:42
344 查看
如何在两个Activity之间传递数据?
1、用Intent.putTExra(“name”,”data”)传递数据
MainActivity.java部分代码界面设计部分有一个Button组件,点击这个btnStartAty的Button会跳到Aty这个Activity,所以在Button上加了onClickListener
findViewById(R.id.btnStartAty).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent i = new Intent(MainActivity.this,TheAty.class); i.putExtra("data","Hello weiyongqiang "); startActivity(i); } });
TheAty.java关键部分代码
public class TheAty extends AppCompatActivity { private TextView tv;//这个tv在UI设计阶段已经被添加进了TheAty @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent i =getIntent(); tv = (TextView) findViewById(R.id.tv); //这里的getStringExtra中的参数data就是上面的“Helloweiyongqiang”的名字 tv.setText(i.getStringExtra("data")); }
2、用Bundle传递数据包
MainActivity.javafindViewById(R.id.btnStartAty).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent i = new Intent(MainActivity.this,TheAty.class); Bundle b = new Bundle(); b.putString("name","weiyongqang"); b.putInt("age",2); //这里Bundle.putXXX()有很多种中类型 //i.putExtra("name",b); 2nd 方法 i.putExtra(b); startActivity(i); } });
TheAty.java
其他部分和上面的代码不变,只记录关键的变化部分
Intent i = getIntent(); Bundle data = i.getExtras(); //Bundle data = i.getBundleExtra("data"); 2nd方法 tv = (TextView) findViewById(R.id.tv); tv.setText(String.format("name=%s,age=%d", data.getString("name"),data.getInt("age")));
3、传递值对象
传递自定义的数据类型写一个User类
public class User implements Serializable{ private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public User(String name,int age) { this.age=age; this.name=name; }
Main.java
Intent i = new Intent(MainActivity.this,TheAty.class); i.putExtra("user",new User("hello Android",2));
这里需要注意的是直接按照上面写在putExra这里会产生错误,解决办法是让user类继承Serializable,后者是java中用来解决序列化数据的类
TheAty
Intent i = getIntent(); User user = (User) i.getSerializableExtra("user");//user是Main中起的名字 tv.setText(String.format("User info(name = %s,age=%d)",user.getName(),user.getAge()));
以上就是三种方法,其中方法3还可以让User继承Parcelable类来实现自定义数据的传递,但后者实现起来不如前者方便,所以我略了。
相关文章推荐
- ACM学习历程—HDU4675 GCD of Sequence(莫比乌斯)
- build.gradle 文件
- 采用合适白盒测试
- nodejs API笔记
- mysql服务常用命令
- 淡定
- 独立开发一个云(PaaS)的核心要素, Go, Go, Go!!!
- 独立开发一个云(PaaS)的核心要素, Go, Go, Go!!!
- 快排模板
- C++学习笔记16——成员函数
- 一款测试接口的好插件
- struts 2配置两种的结果
- C++学习笔记15——局部对象与内联函数
- 黑马android - 学习笔记
- lintcode 容易题:Palindrome Partitioning 分割回文串
- 一道关于排序算法的java面试题
- 不是技术牛人,如何拿到国内IT巨头的Offer
- Lock wait timeout exceeded; try restarting transaction--MySQL
- 淘宝开放平台 top 的概要
- 计算机重新启动后完美的流氓软件自己主动来解决安装方法