activity请求码与结果码-创新互联

void     startActivityForResult(Intent intent, int requestCode)

创新互联长期为上1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为长子企业提供专业的成都做网站、网站制作,长子网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

void     startActivityForResult(Intent intent, int requestCode, Bundle options)

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

final void     setResult(int resultCode)

final void     setResult(int resultCode, Intent data)

  requestCode 请求码,即调用startActivityForResult() 传递过去的值

  resultCode 结果码,结果码用于标识返回数据来自哪个新Activity

二.请求码的作用

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

   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的返回数据

          }

      }

  }

上面的栗子说明,requestCode 和 resultCode都是返回提出请求的MainActivity结果处理函数onActivityResult()使用的标识,只是requestCode 主要用来标识是MainActivity也就是请求Activity发出的哪个请求,而resultCode则是标识哪个Activity处理并返回的请求。

但是,无论requestCode 还是 resultCode都无法用于处理请求的Activity标识是谁发出的请求。因此需要自行传递参数到处理请求的Activity。

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


名称栏目:activity请求码与结果码-创新互联
网站URL:http://pwwzsj.com/article/dccssd.html