Android之startActivityForResult
作用:当aAty跳转之bAty时,需要bAty回传数据,使用startActivityForResult。
相关的函数:
aAty:--跳转至bAty(intent可以传递数据)
void android.app.Activity.startActivityForResult(Intent intent, int requestCode)
bAty:
void android.app.Activity.setResult(int resultCode, Intent data)
aAty:
void android.app.Activity.startActivityForResult(Intent intent, int requestCode)
代码:
aAty:
public class MainActivity extends Activity implements OnClickListener {
private Button bt_jumpAnotherAty; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt_jumpAnotherAty = (Button) findViewById(R.id.bt_jumpAnotherAty);
bt_jumpAnotherAty.setOnClickListener(this);
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (resultCode) {
case RESULT_OK:
String result = data.getStringExtra("result");
Log.d("h_bl", result);
break; default:
break;
}
super.onActivityResult(requestCode, resultCode, data);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_jumpAnotherAty:
Intent intent = new Intent(MainActivity.this, AnotherActivity.class);
startActivityForResult(intent, 0);
break; default:
break;
}
} }
bAty:
public class AnotherActivity extends Activity implements OnClickListener {
private Button bt_setResult; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another);
bt_setResult = (Button) findViewById(R.id.bt_setResult);
bt_setResult.setOnClickListener(this);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_setResult:
// 数据是使用Intent返回
Intent intent = new Intent();
// 把返回数据存入Intent
intent.putExtra("result", "My name is h_bolin");
// 设置返回数据
AnotherActivity.this.setResult(RESULT_OK, intent);
// 结束该Aty,这点很重要。
AnotherActivity.this.finish();
break; default:
break;
}
} }
详解:bAty被销毁时 -- finish(),会返回数据。
PS.
1.一般不会在bAty的onCreate()方法写setResult()方法,需要在调用的时候,才会调用。
2.按Back键,Android会自动调用Aty的finish()方法。
3.可以重写onBackPressed()方法,对Back键的事件处理。
String result = data.getStringExtra("reslt");
4.取值时,要name要写对,不然会报以下错误:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { (has extras) }} to activity {com.example.startactivityforresultdemo/com.example.startactivityforresultdemo.MainActivity}: java.lang.NullPointerException: println needs a message
startActivityForResult() 中requestCode 和 resultCode 的作用:
使用startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,我们需要为startActivityForResult()方法传入一个请求码(第二个参数)。请求码的值是根据业务需要由自已设定,用于标识请求来源。例如:一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity,不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。
详见:
http://blog.csdn.net/donglynn/article/details/22693835
Android之startActivityForResult的更多相关文章
- Android之startActivityForResult的使用
在Android中startActivityForResult主要作用就是: A-Activity需要在B-Activtiy中执行一些数据操作,而B-Activity又要将,执行操作数据的结果返回给A ...
- Android的startActivityForResult()与onActivityResult()与setResult()参数分析,activity带参数的返回
一.使用场景 在一个主界面(主Activity)通过意图跳转至多个不同子Activity上去,当子模块的代码执行完毕后再次返回主页面,将子activity中得到的数据显示在主界面/完成的数据交给主Ac ...
- Android使用 startActivityForResult 、 onActivityResult 时的注意事项
今天使用 startActivityForResult 时遇到两个问题,应该是常见问题了吧,浪费了些时间才搞定,做个记录. 1. onActivityResult 的触发顺序问题 这个问题很郁闷,我一 ...
- Android的startActivityForResult不起作用
之前startActivityForResult一直用的好好的,今天发现怎么也不起作用.检查后发现有两点影响了. 1.android:launchMode="singleTask" ...
- 【转】android的startActivityForResult学习心得
http://blog.csdn.net/yanzi1225627/article/details/7800529 从昨晚到现在终于调试通了一个startActivityForResult的例子,网上 ...
- Android Fragment StartActivityForresult调用实例
fragment里面的onActivityResult 怎样才能被调用,很简单,就一句话, startActivityForResult(intent, getActivity().RESULT_FI ...
- 简化Android的startActivityForResult调用
一个是解决在onActivityResult 中判断requestCode的问题,第二个是让调用代码的地方就知道我是如何处理对方activity 的返回的. 首先我们有一个ResultActivity ...
- android 加载自定义图片并在图片上绘图
来源:毕设 关键词:Bitmap Canvas //毕设中需要自定义室内地图,并且在地图上绘制轨迹 //此处是一个测试Demo,实现图片的加载和记录手指在屏幕上的运动轨迹 图片的载入 使用系统提供的内 ...
- 打开Android系统安装APK的页面
//使用隐式意图开启安装APK的Activity Intent intent = new Intent("android.intent.action.VIEW"); intent. ...
随机推荐
- spring aop与aspectj
AOP:面向切面编程 简介 AOP解决的问题:将核心业务代码与外围业务(日志记录.权限校验.异常处理.事务控制)代码分离出来,提高模块化,降低代码耦合度,使职责更单一. AOP应用场景: 日志记录.权 ...
- iOS 之持久化存储 plist、NSUserDefaults、NSKeyedArchiver、数据库
1.什么是持久化? 本人找了好多文章都没有找到满意的答案,最后是从孙卫琴写的<精通Hibernate:Java对象持久化技术详解>中,看到如下的解释,感觉还是比较完整的.摘抄如下: 狭义的 ...
- powercmd注册码
推荐一个很方便的软件:powercmd 用户名:nzone 注册码:PCMDA-86128-PCMDA-70594 . 下载地址网上很多: http://soft.hao123.com/soft/a ...
- jquery序列化表单
没有使用其他的东西 , 数据传送是最基本的. 前台: var info = $('#dataForm').serialize() ; alert(decodeURIComponent(info,tru ...
- 转:通过Spring Session实现新一代的Session管理
长期以来,session管理就是企业级Java中的一部分,以致于我们潜意识就认为它是已经解决的问题,在最近的记忆中,我们没有看到这个领域有很大的革新. 但是,现代的趋势是微服务以及可水平扩展的原生云应 ...
- 【bzoj3744】GTY的妹子序列
大力分块+树状数组+主席树…… #include<bits/stdc++.h> #define N 50005 #define pa pair<int,int> #define ...
- phoronix-test-suite测试云服务器
centos系统 phoronix-test-suite是目前Linux下比较常用的性能测试软件. 使用phoronix-test-suite条件前提:需要安装php5,需要PHP都DOM扩展 因为是 ...
- 【 Zabbix 】— 监控nginx
一.环境说明 OS:centos6.7 x64 nginx:nginx/1.9.9 ZABBIX:2.4.8 zabbix监控nginx是根据nginx的stub_status模块,抓取status模 ...
- javascript字符串中包含特殊字符问题
我们都知道,在javascript中,字符串写在单引号或者双引号之中.因为这种要求,我们有些时候一些需要的字符串不能够被javascript解析,如下: "We are "Huma ...
- private,public,protected 的作用
public 修饰的变量和函数可以在类的内部和外部都可以访问 protected 修饰的变量和函数只可以在类的内部访问,如果该类派生出子类,那么在子类中该变量和函数也可以使用 private ...