2016-11-07 70 views
2

我正在用多个屏幕创建一个应用程序,用户将不得不浏览。具体而言,我目前正在对一组活动必须联系在一起如下:按BACK按钮时返回到正确的活动状态?

  • 主要活动 - >点击一个按钮导致“CreateCharacterActivity” - >点击一个按钮导致“CharacterMainActivity”
  • “CharacterMainActivity”上的BACK按钮应该返回MainActivity,而不再次显示CreateCharacterActivity。
  • 此行为应该与应用程序的其他区域类似,但它应该恢复BACK按钮导致的活动在暂停之前处于的状态。

所以为了简化,我想这样。

  • 活性A - >活动B - >活动Ç
  • BACK按钮使活性C返回到活动A不经过活动B.去

我试图这样做:

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    Intent intent = new Intent(this, MainActivity.class); 
    startActivity(intent); 
    finish(); 
} 

但是这只是调用一个MainActivity的新实例。当我在MainActivity实例上按BACK时,它将我带回CharacterMainActivity。

我该如何做到这一点?我假设它涉及访问活动堆栈?

回答

4

当您从活动B移动到活动C时,请在活动C上同时致电startActivity,同时致电finish()。这将从任务堆栈中移除活动B.

+0

谢谢!我不知道为什么我之前没有想到... –

+0

如果我在活动A中有一个对象的引用,然后启动活动B并将该对象作为Parcelable传递,然后在该活动中修改它并按BACK返回到活动A,A将对该对象的引用修改为它在B中的位置吗? –

0

您可以开始结果的子活动,然后使用相同的请求代码结束子活动。

启动子活动:

startActivityForResult (Intent intent, int requestCode)

用于完成所有的子活动

finishActivity (int requestCode)

相关问题