5

我在应用程序中有一个向导,通过 6 个活动。

所以我打电话:

主要活动 - 看涨期权 1 - 看涨期权 2 - 看涨期权 3 - 看涨期权 4 - 看涨期权 5

现在,在选项 5 上,我将整个操作保存到数据库,此时我需要返回主活动并销毁选项 1、2、3、4 和 5。

在选项 5 保存到数据库之前,我需要能够返回,进行更改,然后转到选项 5 并保存它。

正确的方法是我以某种方式创建具有以下功能的方法:

private void cleanStack(){
   Option1.finish();
   Option2.finish();
   Option3.finish();
   Option4.finish();
   Option5.finish();
}

然后开始(或恢复)主要活动?

肿瘤坏死因子

4

2 回答 2

7

使用以下命令清除堆栈:

Intent intent = new Intent ( this , MainActivity.class );
intent.addFlags ( Intent.FLAG_ACTIVITY_CLEAR_TOP );
startActivity ( intent );

以这种方式,因为在堆栈中你有: Main Activity -> Call Option 1 -> Call Option 2 -> Call Option 3 -> Call Option 4 -> Call Option 5

如果您使用clear top标志启动MainActivity ,则MainActivity顶部堆栈中的所有活动都将完成。

于 2012-09-24T14:12:43.997 回答
3

我要做的是,而不是完成所有活动,而是创建一个 Intent 来回调您的 MainActivity。

使用该setFlags方法为这个 Intent 赋予FLAG_ACTIVITY_CLEAR_TOP.

这将检查您的堆栈以查看 MainActivity 的实例是否已经存在,如果存在,它将将该 Activity 带到前面并清除其上方的所有 Activity,而不是重新启动 MainActivity 并将其放在堆栈顶部。

如果 MainActivity 需要选项 1-5 中的信息,您可能需要刷新数据,因为 CLEAR_TOP 在大多数情况下会将 MainActivity 的旧实例置于焦点,而不是完全重新创建它(onCreate不会被调用,但onStartonResume)。

这是 Intent 类的文档。如果您遇到困难,还有其他标志可以帮助您导航。祝你好运!

于 2012-09-24T14:12:31.480 回答