是的,您可以通过使用您选择作为处理结果的父活动的startActivityForResult()来做到这一点。
启动一项您希望在完成后获得结果的活动。当此活动退出时,您的 onActivityResult() 方法将使用给定的 requestCode 调用。使用否定的 requestCode 与调用 startActivity(Intent) 相同(该活动不作为子活动启动)。
基本上在 Parent 活动中,您可以执行以下操作:
Intent intent = ...
startActivityForResult(intent, SOME_UNIQUE_INT_CODE);
然后你必须定义一个方法来处理结果,即onActivityResult()
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == SOME_UNIQUE_INT_CODE) {
// do something
}
}
在子活动中,您可以使用setResult()设置结果。此方法有两种变体,其中一种使您可以传入一些数据。
请阅读文档以了解有关如何使用它的更多信息。
编辑:
您可以使用:来自被调用活动的getCallingActivity()来查找哪个是父活动,但只有在您使用 startActivityForResult 时才有效。
返回调用此活动的活动的名称。这就是将 setResult() 中的数据发送给谁。您可以使用此信息来验证是否允许接收者接收数据。
注意:如果调用活动不期望结果(即它没有使用包含请求代码的 startActivityForResult(Intent, int) 形式),那么调用包将为空。