您的位置:首页 > 产品设计 > UI/UE

requestcode resultcode区别,运用

2015-04-23 21:39 127 查看
startActivityForResult(Intent intent,int RequestCode)用于启动另一个activity并等待其返回的结果,毋庸置疑,intent用于启动目标activity,而RequestCode的作用是什么呢?

由于每个activity都可以启动任意的子activity并等待结果,而结果处理函数只有一个--onActivityResult(int requestCode, int resultCode, Intent intent),因此为了区别请求的activity,android将每个请求设定一个大于等于0的int值,这就是requestcode。由此,在onActivityResult函数中即可利用requestCode区别开不同的返回结果。

而onActivityResult中的resultCode参数对应于子模块中setResut(int resultCode, Intent intent)函数中的resultCode值,用于区别不同的返回结果(如请求正常、请求异常等)。

对应流程:

母模块startActivityForResult--触发子模块,根据不同执行结果设定resucode值,最后执行setResut并返回到木模块--母模块触发onActivityResult,根据requestcode参数区分不同子模块

eg:

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (data == null) return;
        //结果码
        if (resultCode == RESULT_OK) {
            //处理个人资料中基本参数的修改处理
            if (requestCode == 1001) {
                int type = data.getIntExtra(MineProfileEditUI.TYPE, 0);
                String value = data.getStringExtra(MineProfileEditUI.VALUE);
                switch (type) {
                    //昵称
                    case 0:
                        mUser.name = value;
                        mProfileName.setText(mUser.name);
                        break;
                    //性别
                    case 1:
                        mUser.gender = Integer.parseInt(value)+1;
                        mProfileGender.setText(mUser.gender==1 ? "男" : "女");
                        break;
                    //生日
                    case 2:
                        mUser.birthday = value;
                        mProfileBirthday.setText(mUser.birthday);
                        break;
                    //地址
                    case 3:
                        mUser.address = value;
                        mProfileAddress.setText(mUser.address);
                        break;
                    //个性签名
                    case 4:
                        mUser.signature = value;
                        mProfileSignature.setText(value);
                        break;
                    default:
                        break;
                }
            } //设置圆形头像修改
            else if (requestCode == FROM_ALBUM) {
                startPhotoZoom(data.getData());
            }  //剪切头像之后的请求码
            else if (requestCode == FROM_CATE) {
                  // 处理结果
                Bundle extras = data.getExtras();
                if (extras != null) {
                    final Bitmap photo = extras.getParcelable("data");

                    new Thread(new Runnable() {
                        @Override public void run() {
                            String url=null;
                            Message msg = handler.obtainMessage();
                            try{
                                url =
                                        FTPUpload.ftpUpload(getUserId(), FTPUpload.Type.IMAGE, bitmap2Stream(photo));
                            }catch (Exception e){

                            }

                            if (TextUtils.isEmpty(url)) {
                                msg.what = 0;
                            } else {
                                msg.what = 1;
                                msg.obj = url;
                            }
                            handler.sendMessage(msg);
                        }
                    }).start();
                }
            }
        }
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: