我在app中有一些向导经历了6个活动。
所以我打电话给:
主要活动 - 致电选项1 - 拨打选项2 - 拨打选项3 - 拨打选项4 - 拨打选项5
现在,在选项5上,我将整个操作保存到数据库,此时我需要返回主要活动并销毁Option1,2,3,4和5.
在选项5保存到数据库之前,我需要能够返回,进行更改,转到选项5并保存。
正确的做法是以某种方式创建具有以下方法的方法:
private void cleanStack(){
Option1.finish();
Option2.finish();
Option3.finish();
Option4.finish();
Option5.finish();
}
然后开始(或恢复)主要活动?
TNX
答案 0 :(得分:7)
使用以下内容清除堆栈:
Intent intent = new Intent ( this , MainActivity.class );
intent.addFlags ( Intent.FLAG_ACTIVITY_CLEAR_TOP );
startActivity ( intent );
以这种方式,因为在堆栈中你有: 主要活动 - >呼叫选项1 - >呼叫选项2 - >呼叫选项3 - >呼叫选项4 - >拨打选项5
如果您使用清除顶部标志启动 MainActivity ,则 MainActivity 顶部的堆栈中的所有活动都将完成。< / p>
答案 1 :(得分:3)
我要做的是,而不是完成所有活动,创建一个Intent来回调你的MainActivity。
使用setFlags
方法将此Intent设为FLAG_ACTIVITY_CLEAR_TOP
。
这将检查您的堆栈以查看MainActivity的实例是否已经存在,如果它确实存在,它会将该Activity带到前面并清除其上方的所有活动,而不是重新启动MainActivity并将其置于堆栈顶部。
如果MainActivity需要选项1-5中的信息,您可能需要刷新数据,因为在大多数情况下,CLEAR_TOP会将MainActivity的旧实例置于焦点而不是完全重新创建它(onCreate
不会被叫,但是onStart
和onResume
会。)
这是Intent类的documentation。如果您遇到困难,还有其他标志可以帮助您进行导航。祝你好运!