[Android学习笔记]startActivityForResult和onActivityResult的使用
发开过程中,免不了多个页面之间相互交互通信。
Android中使用startActivityForResult方法和onActivityResult配合完成任务
startActivityForResult方法:
public void startActivityForResult (Intent intent, int requestCode)
public void startActivityForResult (Intent intent, int requestCode, Bundle options)
intent对象:
启动目标Activity,传递数据
requestCode码:
如果此值大于等于0,将会在当前Activity的onActivityResult方法中作为判断回传的子Activity的依据
onActivityResult 方法:
protected void onActivityResult (int requestCode, int resultCode, Intent data)
requestCode请求码:作为判断回传的子Activity的依据
resultCode结果码:子Activity的操作结果表示
intent对象:子Activity数据载体
使用步骤:
1.父Activity中重写onActivityResult方法
2.使用startActivityForResult启动子Activity
Ex:
1.MainActivity
Button btn = (Button)findViewById(R.id.btnGotoSecondActivity);
btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub // 设置传递的数据
Intent intent = new Intent(arg0.getContext(),SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putString("data", "hello third activty");
intent.putExtra("data", bundle); // 设置请求码
startActivityForResult(intent, SecondActivityRequestCode);
}
}); Button btnThird = (Button)findViewById(R.id.btnGotoThirdActivity);
btnThird.setOnClickListener(new View.OnClickListener()
{ @Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub // 设置传递的数据
Intent intent = new Intent(arg0.getContext(),ThirdActivity.class);
Bundle bundle = new Bundle();
bundle.putString("data", "hello third activty");
intent.putExtra("data", bundle); // 设置请求码
startActivityForResult(intent, ThirdActivityRequestCode);
}
});
MainActivity
2.onActivityResult
/* requestCode:请求码
* 用于标识回传的子Activity,根据此值判断是从哪一个子Activity返回的,它与startActivityForResult方法中的requestCode对应
*
* resultCode:结果码
* 是子Activity的一个结果标识,一般在子Activity中定义,子Activity操作结束之后,使用setResult方法设置子Activity的结果状态
* 父Activity根据此结果码判断为对应的Activity做不同的处理
*
* example:
* if(requestCode == secondActivityRequestCode)
* {
* if(resultCode == SecondActivityResultCodeSuccess)
* {
* // do success
* }
* else if(resultCode == SecondActivityResultCodeFail)
* {
* // do fail
* }
* }
*
* data:Intent对象
* 子Activity的Intent对象,从此对象中获取Bundle载体,获取子Activity传递的数据
*
* @see android.app.Activity#onActivityResult(int, int, android.content.Intent)
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data); // 从SecondActivity返回
if(requestCode == SecondActivityRequestCode)
{
Intent intent = data;
Bundle bundle = intent.getExtras(); // 如果SecondActivity操作成功
if(SecondActivity.SecondActivityResultCode1 == resultCode)
{
String dataString = bundle.getString("data");
Toast.makeText(this, "get data from SecondActivity" + SecondActivity.SecondActivityResultCode1,Toast.LENGTH_SHORT).show();
}
else if(SecondActivity.SecondActivityResultCode2 == resultCode) // 如果SecondActivity操作失败
{
String dataString = bundle.getString("data");
Toast.makeText(this, "get data from SecondActivity" + SecondActivity.SecondActivityResultCode2,Toast.LENGTH_SHORT).show();
}
}
else if(requestCode == ThirdActivityRequestCode) //从ThirdActivity返回
{
Intent intent = data;
Bundle bundle = intent.getExtras();
String dataString = bundle.getString("data"); Toast.makeText(this, "get data from ThirdActivity :" + dataString,Toast.LENGTH_SHORT).show();
}
}
onActivityResult
3.SecondActivity
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
// TODO Auto-generated method stub
// return super.onKeyDown(keyCode, event);
// 如果是物理返回按键
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
{
// 获取Intent
Intent itent = this.getIntent(); // 创建Bundle对象,设置需要回传的数据
Bundle bundler = new Bundle();
bundler.putString("data", "i ' m come from SecondActivity"); // 为Intent设置数据载体Bundle
itent.putExtras(bundler); // 设置结果
// this.setResult(SecondActivityResultCode1, itent);
this.setResult(SecondActivityResultCode2, itent); // 结束当前Activity
this.finish(); return false;
} else
// 如果不是物理返回按键则正常响应
{
return super.onKeyDown(keyCode, event);
}
}
SecondActivity
[Android学习笔记]startActivityForResult和onActivityResult的使用的更多相关文章
- Android学习 之 startActivityForResult 和 onActivityResult
startActivityForResult 和 onActivityResult() 作用:主要用于 主Activity向调用的 子Activity 获得数据. 使用方法:在 主Activity写 ...
- 【转】Pro Android学习笔记(十二):了解Intent(下)
解析Intent,寻找匹配Activity 如果给出component名字(包名.类名)是explicit intent,否则是implicit intent.对于explicit intent,关键 ...
- Pro Android学习笔记(一三七):Home Screen Widgets(3):配置Activity
文章转载仅仅能用于非商业性质,且不能带有虚拟货币.积分.注冊等附加条件.转载须注明出处http://blog.csdn.net/flowingflying/以及作者@恺风Wei. 通过widget定义 ...
- Android学习笔记:Home Screen Widgets(2):关于Widget
通过widget定义,我们在widget列表中看到了我们的TestWidget.当我们拖拽widget到主页时,假设在appwidet-provider中定义了android:configure的ja ...
- Android 学习笔记之Volley(七)实现Json数据加载和解析...
学习内容: 1.使用Volley实现异步加载Json数据... Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后 ...
- Android学习笔记进阶之在图片上涂鸦(能清屏)
Android学习笔记进阶之在图片上涂鸦(能清屏) 2013-11-19 10:52 117人阅读 评论(0) 收藏 举报 HandWritingActivity.java package xiaos ...
- android学习笔记36——使用原始XML文件
XML文件 android中使用XML文件,需要开发者手动创建res/xml文件夹. 实例如下: book.xml==> <?xml version="1.0" enc ...
- Android学习笔记之JSON数据解析
转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...
- udacity android 学习笔记: lesson 4 part b
udacity android 学习笔记: lesson 4 part b 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 ...
随机推荐
- [置顶] 编程模仿boost::function和boost::bind
boost::function和boost::bind结合使用是非常强大的,他可以将成员函数和非成员函数绑定对一个对象上,实现了类似C#的委托机制.委托在许多时候可以替代C++里面的继承,实现对象解耦 ...
- ios网络学习------1get post异步请求
网络请求的步骤: get请求: #pragma mark - 这是私有方法,尽量不要再方法中直接使用属性,由于一般来说属性都是和界面关联的,我们能够通过參数的方式来使用属性 #pragma mark ...
- 阿里云CentOS配置iptables防火墙[转]
虽说阿里云推出了云盾服务,但是自己再加一层防火墙总归是更安全些,下面是我在阿里云vps上配置防火墙的过程,目前只配置INPUT.OUTPUT和FORWORD都是ACCEPT的规则 一.检查iptabl ...
- c语言,const被绕过
注意在现在的gcc中, const可能会被用指针绕过. linux: #include "stdlib.h" #include <stdio.h> int t1() { ...
- <Win32_12>程序员求爱的创意程序——升级版^_^
前段时间,我编写了一个创意程序,并用于向自己目前的女朋友表白,结果效果还不错,得到了她的芳心. 于是我将自己的创意程序共享到csdn资源上,大多数网友认为创意不错,就是简单了些——呵呵,其实我个人也这 ...
- cocos2d-x 实现clash of clans多点聚焦缩放场景
猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=434 都是以前写的一些效果,整理 ...
- PHP 的解压缩ZipArchive中的extractTo()方法 LINUX+nginx环境中解压zip时文件丢失的问题
在项目中要用ZipArchive解压ZIP文件,起初測试环境在WINDOWS平台中,測试通过,换到 LINUX+nginx 的环境中时 就出问题了(ZIP包中有文件和目录一共3百多个文件,大部分是带汉 ...
- 3.跟我学solr---使用solrj加入索引
上一章讲了怎么使用solr admin向solrserver加入索引,Solr 是一个独立的企业级搜索应用server.它对外提供类似于 Web-service 的 API 接口. 用户能够通过 ht ...
- Qt QDebug等重定向到文件中
源地址:http://blog.163.com/soyo_gogogo/blog/static/171414077201392705639321/ Qt的qDebug() 等函数,可以打印出十分细致的 ...
- js 常用方法记事本
1.获取被选中行的名称<tab选项卡中为iframe> /* S 获取首页被选中的选项卡名称 */ var currTab = $("#layout_center_tabs&qu ...