这可能听起来很简单,但我对它感到很困惑。我已搜索但未找到任何解决方案。
我的问题是:按下后退按钮时如何返回两个活动? 像这样:让我说我有活动A,B和C(A - > B - > C)。我想要实现的是当我在活动C上并按下后退按钮时,它应该将我返回到活动A.当我在B上并按回来时,它应该也会将我返回给A.
它可能被实现到一个包含很多活动的项目中,所以我假设我不需要设置返回的类名,它应该由android自动记录。怎么做到这一点?
谢谢
答案 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中的所有其他活动。