我面临与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
中,以进行所需的任何处理。