Activity之间的数据传递

来源:互联网 发布:centos 6.5 分区方案 编辑:程序博客网 时间:2024/05/20 06:30

Activity之间的数据传递

Activity之间的数据传递需要用到Bundle这个对象,而Activity之间的跳转和带数据跳转是不一样的,所以先说一下在两种不同情况下的启动和关闭Activity。

Activity启动其他Activity有两种方法:

Ø  StartActivity(Intent intent);  启动其他Activity

Ø  startActivityForResult(Intent intent, int  requestCode):通过制定的请求码启动Activity,而且程序将会等到新启动的Activity的结果(通过重写onActivityResult()方法获取)。

requestCode参数代表启动Activity的请求码,这个请求码的值由开发者根据业务自行设置,用于标识请求来源。

 

与启动对应的有两种关闭Activity的方法

Ø  finish();

Ø  finishActivity(int requestCode) ;

 

 

然后两个Activity只需要页面跳转传递数据,而不需要返回结果的话,直接用startActivity()和finish()两个方法即可。如果需要传递数据,并有结果需要返回前一个Activity时,则调用第二种。

 

使用Bundle在Activity之间交换数据

 

Intent提供了多个重载的方法来“携带”额外的数据包

Ø  putExtras(Bundle  data); 放入数据

Ø  Bundle getExtras();  取出数据

Ø  putExtra(String  name,Xxx  value);以key-value对的形式放入数据

Ø  getXxxExtra(String  name); 按key取出数据

 

Bundle对象扮演的角色就是一个封装好的数据包,Bundle提供了多种方法来存入数据

Ø  putXxx(String key, Xxx data);可以向Bundle中放入int String类型的数据

Ø  putSerializable(String  key, Serializable  data); 向Bundle中放入一个可序列化的对象,一个可序列化对象需要实现Serializable接口,

对应的获取数据的方法有

Ø  getXxx(String  key);

Ø  getSerializable(String key,  Serializable  data);

 

没有返回结果的数据传递比较简单,此处不在附加代码。

 

启动其他Activity并返回结果

 

前面已经说过,有返回结果的跳转,需要用startActivityForResult(Intent  intent,int requestCode); 来启动Activity。

 

为了获取被启动的Activity返回的结果需要两个方面准备。

(1):当前Activity需要重写onActivityResult(int  requestCode,int  resultCode,Intent intent);

当被启动的Activity返回结果时,该方法被触发,requeCode请求码和resulCode结果码由开发者自行设定。

(2):被启动的Acti需要调用setResult()放法设置处理结果

 

0 0
原创粉丝点击