android之startActivityForResult

思想:

普通intent直接启动一个activity, 调用startActivity方法

然后 startActivityForResult这个方法会在调用完毕之后从后启动的activity中返回 一些结果给调用者,当然这个传递就得通过Intent的extra来传递了。
下面对着具体的参数来看。

活动A中:

Intent intent = new Intent();

intent.setClass(this,  B.calss);

//这里还可以添加要传递给B的数据

//比较小的数据直接传数据类型

//比较多的话可以用bundle类来传递

startActivityForResult(intent,  10);  //第二个参数叫requestcode , 大于等于0,相当于返回的时候一个标记。

活动B中:

1.   getIntent()得到Intent

2.   通过Intent得到你想要得到的数据

3.   然后通过调用setResult方法返回一个resultcode

注意上面出现了 两个未知的的东西。   requestcode and resulecode

在那里用到它们呢?  活动A中,因为是活动A需要活动B返回来的信息

因此在A中实现一个方法

onActivityResult(int requestCode, int resultCode, Intent data)

两个都来了。 由requestcode确定是哪个acitivity返回的。resultCode确定返回的情况。Intent data就可以从它的extra里面获得数据了。

OK 。 不明白的话再从网上找例程吧。

另外还有很重要的一点,onActivityResult如何调用。 在恢复过来之后有两种情况

1.  如果你的Activity还在的话  应该是  OnactivityResult  --->  Onstart  ---> Onresume,  如果是半屏的activity就是OnactivityResult ---> Onresume

2.  如果Activity不在了,这种情况还没遇到过,没有调试出来。

原文地址:https://www.cnblogs.com/hpf311/p/2565635.html