以编程方式完成子活动

时间:2010-03-30 10:03:44

标签: android android-activity

我有一个使用startActivityForResult方法启动另一个活动的活动。我想以编程方式终止被调用者,但我不知道如何执行此操作,因为在onActivityResult()方法中我没有关于被调用活动的信息,我无法在其上调用finish()。我怎样才能做到这一点?

由于

4 个答案:

答案 0 :(得分:7)

已启动的Activity可以完成自我:

setResult(RESULT_OK);
finish();

答案 1 :(得分:3)

试试finishActivity(requestCode)。根据文档,它允许您完成以前使用startActivityForResult启动的活动。如果有多个此类活动具有相同的请求代码,则所有活动都将完成。

注意:我自己并没有真正尝试过,但这就是文档所说的!试验一下,看看它是否符合您的要求。

答案 2 :(得分:2)

当您调用startActivityForResult时,您的Activity将被关闭或暂停,并且新活动将启动。唯一可以完成新活动的是新活动。

您可以启动后台任务,并让此后台任务以某种方式通知您的活动,该活动现在可以完成。

我不知道如果活动A暂停且活动B处于活动状态,活动A中创建并传递给线程的Handler是否仍然有效。但我认为这是有效的,因为两个活动都在同一个线程中运行,因此它们应该共享相同的消息队列。

答案 3 :(得分:1)

这件事让我感到困惑,所以我想我会在这里添加评论:


if(readyToFinish()){
  finish()
}
thisCodeWillBeExecuted()

我的经验是,之前在堆栈跟踪中的所有代码都会被执行 活动结束了。此时的文档并不理想。