Android onActivityResult获取返回值的用法

现有MainActivity,当它进入到SecondActivity后,在SecondActivity中进行了某些操作然后需要将值返回给MainActivity时,
于是就可以用到onActivityResult() 这个方法了,下面呢,我就具体来介绍一下用法。

1、MainActivity里面的主要代码

(1)当需要返回值时,那么在启动另一个Activity时要用到startActivityForResult(intent, REQUEST_CODE);
     注意第二个参数是请求的int类型的值,这个值要在onActivityResult()方法中和requestCode做判断的,
     由此来判断是启动的某个Activity。
(2)onActivityResult()方法中的第二个参数就是SecondActivity传回来的键,
     第三个参数就是SecondActivity传回来的键对应的值。

  1.     final int RESULT_CODE=101;
  2.     final int REQUEST_CODE=1;
  3.     public void enterSecond(View view) {
  4.         Intent intent=new Intent(this,SecondActivity.class);
  5.         startActivityForResult(intent, REQUEST_CODE);
  6.     }
  7.     
  8.     @Override
  9.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  10.         Log.i(TAG, "onActivityResult"+"requestCode"+requestCode+"\n resultCode="+resultCode);
  11.         if(requestCode==REQUEST_CODE) {
  12.             if(resultCode==RESULT_CODE) {
  13.                 String result=data.getStringExtra("second");
  14.              textView.setText(result);
  15.             }
  16.         }
  17.         super.onActivityResult(requestCode, resultCode, data);
  18.     }

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

  1. final int RESULT_CODE=101;
  2.     public void closeButton(View view) {
  3.         Intent intent=new Intent();
  4.         intent.putExtra("second", "I am second!");
  5.         setResult(RESULT_CODE, intent);
  6.         finish();
  7.     }

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

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

当然,我们还可以看下源码中还有哪些类似RESULT_OK的。

  1. /** Standard activity result: operation canceled. */
  2.     public static final int RESULT_CANCELED = 0;
  3.     /** Standard activity result: operation succeeded. */
  4.     public static final int RESULT_OK = -1;
  5.     /** Start of user-defined activity results. */
  6.     public static final int RESULT_FIRST_USER = 1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谭祖爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值