Android活动堆栈和返回函数问题

Android活动堆栈和返回函数问题,android,android-activity,stack,back,Android,Android Activity,Stack,Back,我有四个活动,A、B、C和D。应用程序从活动A开始,然后通过使用显式意图转到B,然后以相同的方式转到C和D。从D开始,如果我想直接返回到B或A,怎么做?例如,在C中。如果在发送启动活动D的意图后调用finish(),当用户按下活动D中的后退按钮时,她/他将被发送到活动A或B,具体取决于您启动活动C的位置。 另一种方法是设置清除顶部的标志,如下所示: Intent intent = new Intent(this, LoginActivity.class); intent.setFlags(In

我有四个活动,A、B、C和D。应用程序从活动A开始,然后通过使用显式意图转到B,然后以相同的方式转到C和D。从D开始,如果我想直接返回到B或A,怎么做?

例如,在C中。如果在发送启动活动D的意图后调用finish(),当用户按下活动D中的后退按钮时,她/他将被发送到活动A或B,具体取决于您启动活动C的位置。 另一种方法是设置清除顶部的标志,如下所示:

Intent intent  = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);        
startActivity(intent);
最简单的方法是调用finish(),具体取决于您希望应用程序中的流如何

在活动A中

public void onCreate()
{ //当您想开始新的活动时
开始触觉(意图);//开始B的活动
}

在活动B中

public void onCreate()
{
//当您想开始新的活动时
startActivityForResult(intent,10//任何代码值);//开始c的活动
}
在ActivityResult(int请求代码、int结果代码、意图数据)上受保护的void
{
如果(结果代码==25)
{
finish();
}
}

在活动C中

public void onCreate()
{
//当你想回到Activity A时
设置结果(25);
finish();
}

解释

1) 在活动“A”中,您将开始一个新的活动到“B”
2) 在“B”活动中,您使用startActivityForResult方法将一个活动启动到“C”
3) 在“C”活动中,当您完成时,它明显转到“B”活动,带有您设置的结果代码。如果匹配,它将关闭“B”活动,然后转到“A”活动

4) 这是一个跳过一个或多个活动的简单技巧