代码之家  ›  专栏  ›  技术社区  ›  Daniel A. White

在Android中设置根活动/意图

  •  3
  • Daniel A. White  · 技术社区  · 15 年前

    我用意图在不同的活动之间切换。对于一个活动,我希望它清除历史堆栈,因此当用户按下后退按钮时,它会将它们带回家,而不是应用程序中以前的活动。

    2 回复  |  直到 15 年前
        1
  •  6
  •   DarrynB    15 年前

    我必须为我的项目实现同样的事情。我最终做的是替换: startActivity(i);带有startActivityForResult(i,UniqueId);在所有活动中,我都想成为“历史堆栈”的一部分。

    setResult(UniqueId);
    finish();
    

    在child活动中,当我想关闭孩子并返回“home/root”时。

    在父活动中,我实现了:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == UniqueId && resultCode == UniqueId) {
     setResult(UniqueId);
     finish();
    }
    super.onActivityResult(requestCode, resultCode, data);
    }
    

    这实际上意味着,如果子活动发送“home/root”结果(由UniqueId表示),则使用“startActivityForResult(i,UniqueId);”的子活动的所有父级也将关闭。

    希望这有意义?

        2
  •  1
  •   Falmarri    15 年前

    你可以试着打电话 finish() 打电话时你不想留下来的活动 startActivity

    或者,更少的安卓解决方案 onBackPressed() 在你的活动中然后打电话 startActivity() 关于你的主要活动 CLEAR_STACK 旗帜集合。