在android中我有以下路径:
活动1 - >活动2 - >活动3 - > ...活动N - >按下按钮......
当按下按钮时,我想清除/完成从活动2到N的所有活动,然后转到Acitivy X.换句话说,我想完成所有活动,直至初始One,然后移动到另一个。
如果我使用旗帜:
CLEAR_TOP,CLEAR_TASK,NEW_TASK等
理论上,它将使用初始活动完成所有先前的活动。有没有办法让最初的一个活着并转移到活动X?答案 0 :(得分:1)
我不确定我理解这个问题。或者更确切地说,是不能使用FLAG_ACTIVITY_CLEAR_TOP
的原因。
如果设置,则正在启动的活动已在运行中 当前任务,然后而不是启动它的新实例 活动,其上的所有其他活动将被关闭 这个意图将作为一个传递到(现在在顶部)旧活动 新的意图。
例如,考虑一个由活动组成的任务:A,B,C,D。 如果D调用带有解析为的Intent的startActivity() 活动B的组成部分,然后C和D将完成,B接收 给定的Intent,导致堆栈现在为:A,B。
如果我理解正确,那正是你想要的。特别是,
活动1 - >活动2 - >活动3 - > ...活动N - >按 按钮......
使用Activity2.class
和标记FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP
启动意图将返回到Activity2的现有实例(而不是创建新实例)并在onNewIntent()
中传递新意图。你只需要为这个意图添加一个额外的东西,这样这个方法就会知道它之后应该调用ActivityX。
也就是说,除非我遗漏了什么。 :)
答案 1 :(得分:1)
如果您已经访问过某个活动,但在离开时尚未调用finish()
这样做
finish();
Intent mIntent = new Intent(Create_Your_Pizza.this, MainActivity.class);
mIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);;
mIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(mIntent);