我的应用有四项活动; MainActivity,ListActivity1(L1),ListActivity2(L2),ListActivity3(L3)。从Main,用户通过单击按钮下降到L1。在L1中选择项目后,用户在L2中选择项目后进入L2然后L3。在L3中,当选择项目时,启动是/否 - 吐司。如果用户选择“否”,则用户停留在L3上。如果用户选择“是”,则用户返回Main。
以下是问题:如果用户选择“是”将他带到Main并按Back按钮,则返回L3。我想要的是,如果用户已经走到L3,选择是并返回到Main,按Back应该将他带到主屏幕。即我想删除L3的“后跟踪”。
我如何做到这一点?
(Main和ListActivities使用startActivity(new Intent(foo, Bar.class))
)
答案 0 :(得分:2)
当选择是时,你可以这样做:
Intent intent=new Intent(context,MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
这将清除活动堆栈,以便删除L1,L2和L3,并使用新意图启动现有的MainActivity。
答案 1 :(得分:0)
你可以做的是当你启动L2和L3时,你用startAcitiv
启动它startActivityForResult(intent,REQUEST_CODE);
您可以在L1和L2活动中定义结果代码。在L3中,当用户单击“是”时,在完成活动之前,您将调用
的setResult(USER_CLICKED_YES);
您可以将USER_CLICKED_YES定义为L2知道的整数。
在L2中,您可以实现onActivityResult(),并在方法中检查L3的结果是否为USER_CLICKED_YEs,如果是,则完成L2,如果没有,则不执行任何操作。
通过这种方式,您可以构建一个“整理活动链”,以便活动可以自行完成,直到达到您不想完成的活动。