这是我的情况 假设我有这些活动 A - > B - > C - > d
当用户在D中时点击后退按钮时,我想回到A. 但是当用户点击C
的后退按钮时,我想回到B.当我从B转到C时,我打算叫完,但在这种情况下,如果我点击C背面,我就无法返回B
如何在不调用onBackPressed
两项活动的情况下解决此问题?
感谢
答案 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来查看你想做什么。