【问题标题】:How to finish activities up to one specific activity?如何完成最多一项特定活动的活动?
【发布时间】:2016-02-13 16:42:09
【问题描述】:

比如我开了活动A、B、C、D。

我想完成D和C,然后回到B。

我不想打开带有明确任务和新任务标志的活动 B。我也想保留活动 A,以便用户可以使用后退按钮从 B 返回到 A。

我怎样才能做到这一点?

【问题讨论】:

    标签: android android-activity back activity-finish


    【解决方案1】:
    Intent intent = new Intent(getApplicationContext(), B.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    

    在 B 活动中:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if ((keyCode == KeyEvent.KEYCODE_BACK))
        {
            finish();
        }
        return super.onKeyDown(keyCode, event);
    }
    

    【讨论】:

    • 谢谢你,@Reiz3N。 Intent.FLAG_ACTIVITY_CLEAR_TOP 就像一个魅力。
    【解决方案2】:

    我认为你可以在 C 和 D 类的活动方法 onDestroy() 中添加 this.finish(),然后如果你从 C 转到 D,Android 将完成此 Activity,你将直接从 D 转到 B,而不是D 到 C。

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      创建一个全局静态 boolean 说 closeActivity。默认设置为false。当 D 结束时,将变量设置为 true。在活动 C 的onResume 中,检查变量是否设置为true,如果是true,则调用finish()。这样做直到达到活动 B 并在 B 的 onResume 中将 boolean 设置为 false

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-25
        • 2012-03-28
        • 1970-01-01
        相关资源
        最近更新 更多