Android退出之前的活动

时间:2013-08-14 15:03:02

标签: android android-layout android-activity android-navigation

我的申请中有3项活动

  1. 的ActA
  2. ACTB
  3. ACTC
  4. 假设我正在参与ActB活动,而我正在加载ActC而不是finish(); ActB

    然后在ActC中按下按钮时,需要将应用程序重定向到ActB。但是这次当我从重定向的ActB按回来时,另一个ActB(之前加载的)正在显示。

    当我们按下ActC中的按钮时,有没有办法杀死之前加载的所有活动?

    我是android的新手,它毁了我的时间

    请帮忙 提前谢谢

6 个答案:

答案 0 :(得分:2)

ActC启动ActB时,请在目标上使用此标记执行此操作:

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

的Javadoc:

“如果已设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是将关闭其上的所有其他活动,并将此Intent传递给作为新意图的(现在在顶部)旧活动。“

答案 1 :(得分:2)

从ActB到ActC,在调用Intent

后使用Intent和finish()
Intent intent = new Intent(this, ActC.class);
startActivity(intent);
finish();

然后如果你想从C回到B,那么反向做同样的事情,所以切换

Intent intent = new Intent(this, ActB.class);

剩下的就是一样。

答案 2 :(得分:0)

如果你想“杀死”这个活动,你应该调用finish();

为了达到目标,您可以做以下事情。

从ActA启动ActB后,调用startActivity(...)后; put finish();

这样你杀死了活动A,在调用ActC时在ActB中也这样做。然后当你再次从ActC调用ActB时,它将启动一个全新的活动。

答案 3 :(得分:0)

假设你这样移动 A - > B - > C 所有以前的实例都将在后台进行以前的活动。 直到并且除非您要求创建新的活动实例,否则只会这样做。 当你按下按钮时你想来B但是如果你不需要B的新实例,你可以使用背包物品,根据我的说法,你应该这样做。

在按钮单击中,您可以简单地调用onBackPressed(),当您按下设备的按钮时调用该活动。

另外,正如Vee所说,你可以使用该标志来清除当前活动之上的活动。

答案 4 :(得分:0)

如果您不需要 B的新实例,那么您只需拨打finish() onClick()中的C即可会将您带回B,无需Intent或任何其他代码。

如果您需要B的新实例,那么您可以使用Vee的建议,请记住,如果您在中间添加更多内容,这将清除Activities

如果您不需要B的新实例但希望将数据传回给它,那么您可以使用标记FLAG_ACTIVITY_REORDER_TO_FRONT

Intent i = new Intent(ActC.this, ActB.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
// can send data to ActB if needed with putExtras()
startActivity(i);
finish();  // if you want to destroy C and take it off the stack

这不会创建B的新实例,但会将其带到堆栈的顶部,因此当您按下“返回”按钮时,您将不会有第二个实例。

答案 5 :(得分:0)

当用户按下ActC中的按钮返回ActB时(通过创建新的ActB),请执行以下操作:

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

这将完成ActC和之前的ActB并创建新的ActB