startActivityForResult与onActivityResult

androidActivity之间的跳转不只是有startActivity(Intent i)的,startActivityForResult(Intent intent, int requestCode)也是常用的方法。

其作用是可以用onActivityResult(int requestCode, int resultCode, Intent data)方法获得请求Activity结束之后的操作。
   需要注意三个方法:startActivityForResult(Intent intent, int requestCode),onActivityResult(int requestCode, int resultCode, Intent data),setResult(int resultCode, Intent data)

例如如下代码:从From跳转至ToB和ToC

From:
if(条件){
Intent intent = new Intent(this, ToB.class);
startActivityForResult(serverIntent, REQUEST_CODE_01);//跳转至ToB
}else{
Intent intent = new Intent(this, ToC.class);
startActivityForResult(serverIntent, REQUEST_CODE_02);//跳转至ToC
}

public void onActivityResult(int requestCode, int resultCode, Intent data){
          switch (requestCode) {
case REQUEST_CODE_01:
                        if(resultCode==Activity.RESULT_OK)
                        //do something
                        break;
                case REQUEST_CODE_02:
//do something
                        break;
}
}
 

这里说说startActivityForResult(Intent intent, int requestCode)的参数,第一个Intent不用说了,需要注意的是第二个,我们用的是REQUEST_CODE_01和REQUEST_CODE_02,其实这个是我们自己定义的一个int型常量,用于标记的,具体作用可在onActivityResult方法里看到,用于判断是从哪个Activity返回的。
 
ToB:
Intent intent = new Intent();
intent.putExtra(key, value);
setResult(Activity.RESULT_OK, intent);
finish();//结束之后会将结果传回From
 
ToC:
Intent intent = new Intent();
intent.putExtra(key, value);
setResult(Activity.RESULT_OK, intent);
finish();//结束之后会将结果传回From
 
   setResult的第一个参数对应上面onActivityResult的第二个参数,注意别把onActivityResult的第一个参数与第二个参数搞混淆了,一个是请求标记,一个是返回标记。

时间: 2024-12-13 04:55:01

startActivityForResult与onActivityResult的相关文章

Android基础:startActivityForResult 和 onActivityResult 问题

项目中用到弹出Acitivity来获得用户输入 所以用到 onActivityResult()方法接受用户输入 奇怪问题 startActivityForResult() 后直接调用 onActivityResult()    开发人员都知道,可以通过使用 startActivityForResult() 和 onActivityResult() 方法来传递或接收参数.然而在项目中,还没等到被调用的 Activity 返回,onActivityResult() 就被执行了.找了很久,终于通过小道

总结:调用startActivityForResult,onActivityResult无响应的问题

人人都知道,可以通过使用 startActivityForResult() 和 onActivityResult() 方法来传递或接收参数. 但你是否遭遇过onActivityResult()不执行或者未按预想的那样执行的情况呢? 这里我总结了三种情况: 1.执行startActivityForResult,没等到被调用的 Activity 返回,onActivityResult() 就被执行了. 找了很久,终于通过小道消息得知,这与 Activity 的加载模式(launchMode)有关,该

startActivityForResult and onActivityResult

startActivityForResult and onActivityResult startActivityForResult 开启Activity 组织数据之后 发送,onActivityResult 接受数据 1 public class MyActivity extends Activity { 2 ... 3 4 static final int PICK_CONTACT_REQUEST = 0; 5 6 protected boolean onKeyDown(int keyCod

Android的startActivityForResult()与onActivityResult()与setResult()参数分析,activity带参数的返回

一.使用场景 在一个主界面(主Activity)通过意图跳转至多个不同子Activity上去,当子模块的代码执行完毕后再次返回主页面,将子activity中得到的数据显示在主界面/完成的数据交给主Activity处理.这种带数据的意图跳转需要使用activity的onActivityResult()方法. (1)startActivityForResult(Intent intent, int requestCode);  第一个参数:一个Intent对象,用于携带将跳转至下一个界面中使用的数据

BUG系列:转让startActivityForResult()&onActivityResult()没有反应

前天遇到了一个麻烦,还真是麻烦啊. 我使用startActivityForResult()&onActivityResult().由Activity-A 跳转到Activity-B 页面,然后在Activity-B页面编辑完个人资料之后携带个人数据交回到Activity-A页面.事实上非常easy的问题,可是 让我没有预料到的是居然出现了岔子.以下展示我的效果图及正确的代码: 这些代码是作为编辑昵称:<Activity-B页面> public class EditToNickNameA

Activity使用startActivityForResult时出现onActivityResult()不执行的问题

通过使用 startActivityForResult() 和 onActivityResult() 方法可以在Activity之间传递或接收参数.但有时候我们会遭遇onActivityResult()不执行的情况, 第一种情况就是在执行startActivityForResult的时候紧跟着onActivityResult()方法也被执行,我们打log就会发现在onActivityResult()方法中resultCode参数一直返回0,出现这种情况就是跟我们的Activity加载模式有关的,

startActivityForResult 用在于多个Activity之间传值时一些需要注意的用法

requestCode 请求码,即调用startActivityForResult() 传递过去的值 resultCode 结果码,结果码用于标识返回数据来自哪个新Activity 举个例子可能会更明白: 1.在Activity中得到新打开Activity 关闭后返回的数据 package com.google_acmer.activitys; import android.app.Activity; import android.content.Intent; import android.o

Fragment startActivityForResult,接收requestCode方法

Fragment,Activity都有startActivityForResult和onActivityResult方法 ,调用与回调是对应的

关于Fragment 不响应onActivityResult的情况分析

大家都知道,可以通过使用 startActivityForResult() 和 onActivityResult() 方法来传递或接收参数. 但你是否遭遇过onActivityResult()不执行或者未按预想的那样执行的情况呢? 这里我总结了三种情况: 1.执行startActivityForResult,没等到被调用的 Activity 返回,onActivityResult() 就被执行了.找了很久,终于通过小道消息得知,这与 Activity 的加载模式(launchMode)有关,该属