我面临与startActivityForResult()相关的问题

要从FirstActivity启动SecondActivity:

Intent intent = new Intent();
intent.setClass(FirstActivity.this, SecondActivity.class);
intent.putExtra("key1", "12345");
startActivityForResult(intent, 0);

并处理结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //TODO handle here.
}

要将消息从SecondActivity发送到FirstActivity:

在SecondActivity中:
setResult(0);

我无法在FirstActivity中处理onActivityResult上的结果。
它对我的应用程序永远无效。

我的操作系统是:1.5

这是怎么了

最佳答案

startActivityForResult旨在用于您想要选择一条数据或执行Activity或应用程序无法执行的某种操作的情况。

例如,您想要选择一个联系人,然后启动联系人应用程序,用户选择他们想要的人,然后将结果发送给您。或者您想拍照,因此启动相机应用程序,并在完成后要求它将照片发送给您。此操作与您的第一个调用startActivityForResult的 Activity 完全独立。

您启动的Activity不会发送结果给您,直到该Activity完成,即已调用finish()

因此,根据您的情况,您需要使用SecondActivity来调用它:

setResult(...);
finish();

FirstActivity之前将以onActivityResult方法接收结果。当然,这意味着SecondActivity现在不见了,并且FirstActivity再次位于堆栈的顶部。

无法将结果发送到FirstActivity然后关闭它,同时保持SecondActivity仍处于 Activity 状态。在这种情况下,您应该只处理SecondActivity中的“结果”,或者将其发送到您定义的Service中,以进行所需的任何处理。

10-08 18:18