返回并跳过一个活动android onbackpressed

时间:2013-12-18 17:51:49

标签: android android-activity return back activity-finish

这是我的情况 假设我有这些活动 A - > B - > C - > d

当用户在D中时点击后退按钮时,我想回到A. 但是当用户点击C

的后退按钮时,我想回到B.

当我从B转到C时,我打算叫完,但在这种情况下,如果我点击C背面,我就无法返回B

如何在不调用onBackPressed两项活动的情况下解决此问题?

感谢

3 个答案:

答案 0 :(得分:0)

当您开始每项活动时,您需要使用

startActivityForResult()

然后有一个标志系统,说明谁被停止传回来。所以,活动D:

timeToEnd() {
    setResult(RESULT_D_CLOSING);
    finish();
}

然后在A,C,D

onActivityResult(int requestCode, int resultCode, Intent data) {
    switch(resultCode)
    case RESULT_D_CLOSING:
        // Close on upwards
        setResult(RESULT_D_CLOSING);
        finish();
    case ....
        // You get the idea
    }
}

答案 1 :(得分:0)

您是否尝试在意图中使用FLAG_ACTIVITY_CLEAR_TOP标记(用于启动" A"来自" D")?

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

如果已设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是将关闭其上的所有其他活动,并将此Intent传递给(现在在最前面)作为新意图的旧活动。

答案 2 :(得分:0)

这里有2个选项。您可以使用startActivityForResult开始活动,然后每个活动的onBackPressed都会传回一个标志,告诉活动要么退出停留。

另一种选择是将A,B,C,D作为同一活动中的片段实现,然后在打开它们时将所有片段放在backstack上,然后onBackPress您可以通过编程方式循环通过Backstack来查看你想做什么。