我的应用中有五项活动, Act1-> Act2-> Act3-> Act4-> ACT5,
如上所述,所有活动都朝着单一方向发展,
现在我必须在成功完成Act5的任务后再次调用Act2,所以它的工作正常并向我展示Act2(我在Act5中使用了startActivity(callIntent)
再次向我展示了Act2),
在此之后,当我点击Act2中的Back按钮时,我有Act1(我在Act2中使用了startActivity(callIntent)
再次向我显示Act1)它是我想要的......
但问题是,当我点击Act1的后退按钮时,它会让我进入Act2。但是我想从那里退出,因为Act1是第一个初始活动。
如何将焦点设置为隐藏的活动,而不是创建Intent并调用startActivity。
有什么想法吗?请帮忙。
答案 0 :(得分:0)
经过长时间的研究,我对应用程序中的所有活动的“后台堆栈”非常了解。
每次我移动到另一个活动以及打开上一个活动时,我都使用Intent.startActivity()
和flag FLAG_ACTIVITY_NEW_TASK
,所以每次我在“后堆栈”中添加新活动时。
我在使用FLAG_ACTIVITY_CLEAR_TOP
从“back-stack”调用前一个活动时尝试了intent flag Intent.startActivity()
,我得到了回调上一个活动的解决方案并清除了调用之上的所有堆栈顶级活动一项活动。所以现在后退按钮确实可以正常工作。
让我看看调用之前活动的问题,
A = activity; A1->A2->A3->A4->A5->B2
,现在如果点击后退按钮,你将有A1活动,点击A1的后退按钮后,你再次进行了B2活动,这是在A5之后调用的等等。
在A5活动中使用FLAG_ACTIVITY_CLEAR_TOP
后再次调用A2(不创建新活动但是调用了宝贵的活动)我有以下情况。
A = activity; A1->A2->A3->A4->A5
调用之前的A2活动,我有以下场景。
仅A1->A2
。
感谢。
答案 1 :(得分:0)
而不是代码(带有标记Intent.FLAG_ACTIVITY_NEW_TASK
):
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
callIntent.setClass(CurrentActivity.this,PreviousActivity.class);
startActivity(callIntent);
尝试使用以下Intent.FLAG_ACTIVITY_CLEAR_TOP
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
callIntent.setClass(CurrentActivity.this,PreviousActivity.class);
startActivity(callIntent);