FLAG_ACTIVITY_CLEAR_TOP和onActivityResult

时间:2011-02-11 17:56:59

标签: android

我的活动堆栈是A B C,C位于顶部。使用startActivityForResult()启动B.

现在,在C中,它启动A并使用以下代码清除顶部:

        finish();

        intent = new Intent(this, A.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);

我的问题是,在执行上面的代码后,是否会调用A中的onActivityResult()?我预计它会,因为B在C开始A并且清除顶部后被销毁。但是,我的测试代码显示A中的onActivityResult()未被调用。我很迷惑。有人可以帮忙吗?

感谢。

2 个答案:

答案 0 :(得分:3)

在您的代码中,您将从ACTIVITY C开始新的活动A.这不会调用onActivityResult。这只是因为启动了新活动A 。只有在你完成()你的Acitivity B时才会调用onActivityResult()。

我希望有人为这些产品添加更多内容,如果这样做不明确的话。

答案 1 :(得分:0)

尝试将Activity A的launchMode设置为值“singleTask”,或者将标志FLAG_ACTIVITY_CLEAR_TOP与FLAG_ACTIVITY_NEW_TASK结合使用。 默认情况下,Activity A的launchMode是标准的,当你从C开始A时,将创建一个新的A实例。