在我的 android 应用程序中,我首先搜索咖啡馆。当用户选择一个咖啡馆时,下一个活动将显示有关它的更多详细信息。然后用户可以查看咖啡馆的地图。当用户单击完成按钮时,我需要将用户重定向到第一个活动的搜索结果。那么我该怎么做呢?调用 finish() 方法只会关闭当前活动。
提前致谢 !
在我的 android 应用程序中,我首先搜索咖啡馆。当用户选择一个咖啡馆时,下一个活动将显示有关它的更多详细信息。然后用户可以查看咖啡馆的地图。当用户单击完成按钮时,我需要将用户重定向到第一个活动的搜索结果。那么我该怎么做呢?调用 finish() 方法只会关闭当前活动。
提前致谢 !
您可以在进行时在每个活动中使用finish(),或者您可以使用此标志开始您的第一个活动,FLAG_ACTIVITY_CLEAR_TOP
它将清除您第一个活动的所有顶级活动,并将您的第一个活动置于顶部。像这样使用:
Intent intent = new Intent(this, yourFirstActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
使用此标志启动该活动Intent.FLAG_ACTIVITY_CLEAR_TOP
参考: 安卓文档
//DOES NOT FINISH ALL ACTIVITY
Intent intent=new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
//FINISH ALL ACTIVITY WHICH IS IN STACK ABOVE TARGET ACTIVITY
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Intent.FLAG_ACTIVITY_CLEAR_TOP
清除除您的第一个活动之外的所有内容,这应该可以很好地工作。
根据Android 应用程序开发者论坛,您应该通过以下方式启动此活动:-
startActivity(intent);
为了用户仍然可以返回到先前的活动 B,不应使用 Intent.FLAG_ACTIVITY_CLEAR_TOP
相反,活动 B 应该使用 startActivityForResult(...C...) 并且相同的活动 B 应该使用 onActivityResult() 检查结果,如果在活动 C 中单击了 DONE,则完成。但是如果在活动 C 中单击了返回然后活动 B 将正常显示。