Android后退按钮返回两个活动

时间:2014-06-19 13:35:26

标签: android

这可能听起来很简单,但我对它感到很困惑。我已搜索但未找到任何解决方案。

我的问题是:按下后退按钮时如何返回两个活动? 像这样:让我说我有活动A,B和C(A - > B - > C)。我想要实现的是当我在活动C上并按下后退按钮时,它应该将我返回到活动A.当我在B上并按回来时,它应该也会将我返回给A.

它可能被实现到一个包含很多活动的项目中,所以我假设我不需要设置返回的类名,它应该由android自动记录。怎么做到这一点?

谢谢

5 个答案:

答案 0 :(得分:0)

一种可能的解决方案是从Activity B调用startActivityForResult(),这样在创建的Activity C的回调中,前一个Activity B也会完成。回调函数调用onActivityResult(),在那里,你想调用finish()。

示例:

ActivityB:

Intent i = new Intent(this, ActivityC.class);
startActivityForResult(i, 0);

...

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    this.finish();
}

ActivityC:

//do stuff

这样,当您在ActivityC中按Back(或调用finish())时,它将回调ActivityB的onActivityResult()函数,它将结束它们。

答案 1 :(得分:0)

您可以覆盖onBackPressed方法并将意图发送到您想要的活动。

@Override
public void onBackPressed()
{
     // code here to send intent to the activity A
}

有一件事,我不确定这与活动堆栈是否相符,但你总是可以尝试。

答案 2 :(得分:0)

您可以完成活动B,当您开始活动C的意图时,活动堆栈将具有活动A,当您按下活动C时,将显示活动A.

只需覆盖活动C中的onBackPressed,然后完成()它。

答案 3 :(得分:0)

您可以使用onBackButtonPressed中的特殊标记(FLAG_ACTIVITY_CLEAR_TOP)调用要返回的活动,该标记将跳过/删除其中的其他活动。这样你就可以从C回到A.

请参阅:http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

我认为当没有结果返回时,这比使用finish()或开始结果活动更好。

答案 4 :(得分:0)

A - > B - > ç

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

这将为Activity A启动一个新意图,并清除Stack中的所有其他活动。