2

我的 Android 应用程序适用于远足俱乐部,从主屏幕开始,这是主要活动。主屏幕显示房屋风格,并有一些核心功能按钮:即将到来的远足列表、远足历史、最后反应和留言板。

活动流程非常简单,您可以从以下位置导航:主页 -> 远足列表 -> 远足细节

并使用“返回”按钮返回。从 Home 活动返回将要求关闭应用程序。我已经使用 FLAG_ACTIVITY_CLEAR_TOP 标志来防止同一活动的多个实例。但我的问题是我还实现了一个菜单来直接导航到核心功能。

因此,例如,在远足详细信息屏幕中,可以选择转到留言板。但我不想将 Hike List -> Hike Detail 活动保留在堆栈上。因此,当从留言板按 Back 时,我总是想返回 Home 活动。

是否有可能弹出堆栈并仅在启动新活动之前保留 Home 活动?我想这会解决我的问题。

4

1 回答 1

2

我在 SO 上发现了类似的东西可能会起作用。

签出:FLAG_ACTIVITY_TASK_ON_HOME

API 11 之前:

使用 startActivityForResult() 从家里开始所有活动。当您通过全局菜单导航到并行堆栈时。在您当前的活动中调用它:

// startParallelActivity();
setResult(KILL_YOURSELF);
finish;

家庭顶部的每个活动都像这样实现 onActivityResult() :

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

        if(resultCode == KILL_YOURSELF) {
            setResult(KILL_YOURSELF);
            finish();
        }
    }

这将销毁当前堆栈中的所有活动,只留下当用户点击“返回”时将在那里的主活动

于 2013-09-20T16:57:53.130 回答