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()放法设置处理结果
- Activity之间的数据传递
- Activity之间的数据传递
- activity之间的数据传递
- Activity之间的数据传递
- Activity之间数据的传递
- Activity之间的数据传递
- Activity之间的数据传递
- Activity之间的数据传递
- Activity之间的数据传递
- Activity之间的数据传递
- Activity 之间的数据传递
- Activity之间的数据传递
- Activity之间的数据传递
- Activity之间数据传递
- Activity之间传递数据
- Activity之间传递数据
- Activity 之间传递数据
- Activity之间传递数据
- Activity的生命周期与加载模式(一)
- Day13-拖动条控件
- [SDOI2014]数数
- Android 个性化控件整理
- js获取当前页地址栏完整URL
- Activity之间的数据传递
- 完全手动建立maven骨架
- 网络发送参数拼接与Http异步任务回调打包(二)
- 第十三篇 : (State)状态模式
- LayoutInflater的使用
- Linux正则表达式和通配符的区别
- eclipse m2eclipse 最新下载地址
- java 遍历Map的四种方法
- 在tomcat上面安装solr4.8.0全过程