必威体育Betway必威体育官网
当前位置:首页 > IT技术

请求码(requestCode)与结果码(resultCode)解析

时间:2019-06-04 05:41:02来源:IT技术作者:seo实验室小编阅读:57次「手机版」
 

requestcode

Android apk开发中经常需要在活动(Activity)之间穿梭,并实现活动之间的数据传递。为了启动一个新的活动并得到该活动的返回数据,需调用方法startActivityForResult(),该方法的原型为:

void startActivityForResult (intent intent, int requestcode)


同时在原活动中利用方法onActivityResult()来处理返回结果,该方法的原型为:

void onActivityResult (int requestCode, int resultCode, Intent data)

其中:requestCode是用来标识请求的来源

    resultCode是用来标识返回的数据来自哪一个activity

请求码的作用

使用startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,我们需要为startActivityForResult()方法传入一个请求码(第二个参数)。请求码的值是根据业务需要由自已设定,用于标识请求来源。例如:一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity,不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。在onActivityResult()方法如果需要知道新Activity是由那个按钮打开的,并且要做出相应的业务处理,这时可以这样做:

 @Override  public void onCreate(Bundle savedinstanceState) {
        ....
        button1.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v) {
                startActivityForResult (new Intent(MainActivity.this, NewActivity.class), 1);

           }

        });
        button2.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v) {
                 startActivityForResult (new Intent(MainActivity.this, NewActivity.class), 2);

            }

        }); 


       @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
               switch(requestCode){
                   case 1:
                   //来自按钮1的请求,作相应业务处理
                   case 2:
                   //来自按钮2的请求,作相应业务处理
                }
          }
}
结果码的作用

在一个Activity中,可能会使用startActivityForResult()方法打开多个不同的Activity处理不同的业务,当这些新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。为了知道返回的数据来自于哪个新Activity,在onActivityResult()方法中可以这样做(ResultActivity和NewActivity为要打开的新Activity):

public class ResultActivity extends Activity {
       .....
       ResultActivity.this.setResult(1, intent);
       ResultActivity.this.finish();
}
public class NewActivity extends Activity {
       ......
        NewActivity.this.setResult(2, intent);
        NewActivity.this.finish();
}
public class MainActivity extends Activity { // 在该Activity会打开ResultActivity和NewActivity
       @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
               switch(resultCode){
                   case 1:
                   // ResultActivity的返回数据
                   case 2:
                    // NewActivity的返回数据
                }
          }
} 

相关阅读

相机参数标定(camera calibration)及标定结果如何使用

一直都想写一写这个主题,但是,一直都感觉有点虚,也没有去整理。在网上搜了一下,发现大多数都是转来转去,看着也是似懂非懂的,让人很老火

关于百度移动端搜索中结果聚合的几个常见案例分析

作为一个草根站长,日常的生活除了看看百度官方的搜索指南文档,逛逛各大站长博客、SEO博客之外,剩下的时间就是自己一个人默默的研究

中国互联网创新产品评选结果揭晓,大奖花落谁家?

[核心提示] 5 个月的报名、筛选、投票之后,哪些产品获得了 InnoAwards 的荣誉呢?每一个产品背后,都有⼀个苦逼的团队,他们日以继夜,充

获取HttpActionContext请求参数

主要通过反射获取请求参数,输出JSON格式数据方便以后直接转换对象 string postStr =""; HttpActionContext actionContext = thi

Win7操作系统:请求的操作需要提升

请求的操作需要提升产生该问题的原因是:程序运行的时候,没有获得管理员权限 右键桌面的“计算机” - 选择“管理”;依次展开“计算

分享到:

栏目导航

推荐阅读

热门阅读