详细解释下多个Activity之间 startActivityForResult 时,requestCode 和 resultCode 的传递和用法

来源:互联网 发布:虎扑认证淘宝店 编辑:程序博客网 时间:2024/06/10 01:45

请求码 响应码 

请求码

两个button 开启 activity 并返回结果。。

为了区分是哪个button开启的,就可以设置请求码1代表第一个,2代表第二个。

startActivityForResult(Intent,1);

startActivityForResult(Intent,2);

响应码

       Intent data = new Intent();

      data.putExtra("number",number);

if(true) {

     //100为本地联系人

       setResult(100,data);

}else 

     //200为远程联系人

      setResult(200,data);



void onActivityResult(int request,int response,Intent data) {

       if(data!=null) {

            if(request==1) {

              //操作button1开启哪个返回的结果

                   if(response==100) {

                    //100为本地联系人

                         }else if(response==200) {

                         //200为远程联系人

                      }

         }else if(request==2) {

             / /操作button2开启哪个返回的结果

             }

    }


}


singleTask, startActivityForResult不能共存的问题

原因未知,设置了目标BActivity为singleTask后,在AActivity中调用BActivity,例如

Intent intent = new Intent(this, BActivity.class);

startActivityForResult(intent, 1);

结果先会调用到  AActivity中的onActivityResult,而在BActivity设置setResult(Activity.RESULT_OL)后,AActivity的onActivityResult不会接受到通知。

 

解决方案:设置BActivity为singleTop.