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传回来的键对应的值。

final
int RESULT_CODE=101;

final
int REQUEST_CODE=1;

public
void enterSecond(View
view)
{

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()方法中的第二个、第三个参数相对应。

final
int RESULT_CODE=101;

public
void closeButton(View
view)
{

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);

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 14:23:42

Android onActivityResult的相关文章

Android onActivityResult获取返回值的用法

2014-03-09 00:08:15 分类: Android平台 现有MainActivity,当它进入到SecondActivity后,在SecondActivity中进行了某些操作然后需要将值返回给MainActivity时, 于是就可以用到onActivityResult() 这个方法了,下面呢,我就具体来介绍一下用法. 不过在这之前,先讲一下intent的用法: 对于intent主要的分类主要包括隐式意图和显式意图.显式意图通常主要是启动本应用中的Activity之间的数据, 而隐式意

Android onActivityResult和setResult

如果你想在Activity中得到新打开Activity关闭后返回的数据,你需要使用系统提供的startActivityForResult(Intent intent,int requestCode)方法打开新的Activity,新的Activity关闭后会向前面的Activity传回数据,为了得到传回的数据,你必须在前面的Activity中重写onActivityResult(int requestCode, int resultCode,Intent data)方法: public class

android onActivityResult()接收返回数据为null的解决方案

对于·app多个界面管理,如果一般使用Activity默认的加载模式,按返回键就会退回上一次操作,就是一种新建一个Activity实例.时间长了就会变得卡顿,一般人会选择手动地在代码中屏蔽返回键,使用app中开发的返回键,这样也可以解决问题. 但是本质问题还是没解决,不可能以后开发也用这样的方法,用多了也烦躁.所以解决这个问题的关键在于了解Activity的加载模式. 第一中加载模式是:standard标准模式,系统默认的加载的模式 android:launchMode="standard&qu

Android onActivityResult 设置requestCode 返回的code不对

今天在项目里用到 Intent intent=new Intent(getActivity(), Test.class);startActivityForResult(intent, 1); onActivityResult本来返回应该是1的,但是却返回了9001,仔细一看是从Fragment跳转到Activity,要使用 Intent intent=new Intent(getActivity(), Test.class);getActivity().startActivityForResul

【转】关于onActivityResult方法不执行的问题汇总

首先说说本人碰到的于onActivityResult不执行的情况.(网上找了很久都没有人碰到) 1.直接上代码说明 ActivityA的代码:(放在onCreate方法中) [java] view plaincopyprint? Intent intent = new Intent(ActivityA.this, ActivityB.class); Bundle bundle = new Bundle(); bundle.putString("abc", "aaaaaaaaa

Android的Activity的launchMode与onActivityResult方法的关系

Android的Activity有四种启动模式,分别是standard.singleTop.singleTask.singleInstance. 测试发现,不同的模式下onActivityResult的调用时机不同: 1 在standard.singleTop两个模式下,onActivityResult方法会在当前的Activity结束掉之后被调用 2 在singleTask.singleInstance两个模式下,onActivityResult方法会立即调用,等到再setResult的时候,

调用android的Camera 执行结果没有回调onActivityResult()

============问题描述============ 我调用android系统的 camera : Uri uri = Uri.fromFile(new File(imagepath)); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); mactivity.startActivityForResult(intent,2); 打

我的Android进阶之旅------>Android Activity的singleTask加载模式和onActivityResult方法之间的冲突

今天调试一个bug的时候,情景如下: 一个Activity A,需要用startActivityForResult方法开启Activity B.Activity B的launch mode被设置为singleTask,那么在Activity B开启之后的瞬间(未等B返回任何result),Activity A中的onActivityResult方法就会被调用,并且收到一个RESULT_CANCEL的request code. 然后在ActivityB中做了一些逻辑之后,在Activity B通过

android调试bug集锦 onActivityResult立即返回,并且被CANCEL

症状: 在使用startActivityForResult调用照相机或者选择图片的时候,总是onActivityResult立马返回,resultCode=0 CANCEL. startActivityForResult(intent,IMAGE_PICK_REQUEST); 因为是在fragment里面使用startActivityForResult有问题,所以开始以为是因为fragment导致的问题,各种调试都无法解决问题. 解决方法: 后来突然看到manifests里面看到activity