Android onActivityResult

对于intent主要的分类主要包括隐式意图和显式意图。显式意图通常主要是启动本应用中的Activity之间的数据,
而隐式意图则常见于启动系统中的某些特定的动作,比如打电话,或者是跨应用的Activity启动。
一般来说:
显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、
数据(URI和数据类型)找到最合适的组件来处理这个意图。
1、MainActivity里面的主要代码
(1)当需要返回值时,那么在启动另一个Activity时要用到startActivityForResult(intent, REQUEST_CODE);
注意第二个参数是请求的int类型的值,这个值要在onActivityResult()方法中和requestCode做判断的,
由此来判断是启动的某个Activity。
(2)onActivityResult()方法中的第二个参数就是SecondActivity传回来的键,
第三个参数就是SecondActivity传回来的键对应的值。

  finalint RESULT_CODE=101;
    final int REQUEST_CODE=1;
    public void enterSecond(Viewview) {
        Intent intent=new Intent(this,SecondActivity.class);
        startActivityForResult(intent, REQUEST_CODE);
    }

    @Override
    protected void onActivityResult(int requestCode,int resultCode, Intent data){
        Log.i(TAG,"onActivityResult"+"requestCode"+requestCode+"\n resultCode="+resultCode);
        if(requestCode==REQUEST_CODE){
            if(resultCode==RESULT_CODE){
                String result=data.getStringExtra("second");
                textView.setText(result);
           }
       }
       super.onActivityResult(requestCode, resultCode, data);
    }

2、SecondActivity 类中的代码:
这个里面的RESULT_CODE、intent分别跟上段代码中onActivityResult()方法中的第二个、第三个参数相对应。

finalint RESULT_CODE=101;
    public void closeButton(Viewview) {
        Intent intent=new Intent();
        intent.putExtra("second","I am second!");
        setResult(RESULT_CODE, intent);
        finish();
    }

3、除此之外,onActivityResult()方法中的第二个参数resultCode还有系统自带的一些参数,也就是说,如果我们启动的intent是隐式意图,那么可以用Activity类中RESULT_OK来表示操作已经顺利结束。
例如,调用系统图库的返回,请看代码:

final int CROP_PIC_REQUESTCODE = 23;
final int SELECT_PICTURE = 21;
if(resultCode == RESULT_OK&& requestCode== SELECT_PICTURE){
            System.out.println("调用图库返回,关闭activity");
            Intent intent1 =new Intent("com.android.camera.action.CROP");
            intent1.setDataAndType(data.getData(),"image/*");
            intent1.putExtra("crop","true");
            intent1.putExtra("aspectX", 1);
            intent1.putExtra("aspectY", 1);
            intent1.putExtra("outputX", 80);
            intent1.putExtra("outputY", 80);
            intent1.putExtra("return-data", true);
            startActivityForResult(intent1, CROP_PIC_REQUESTCODE);
        }

转载于:https://my.oschina.net/nandecanghai123/blog/1529309

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值