假设我有一个包含名为A,B,C,D的活动的应用程序.现在,考虑A已经作为根活动启动而B已经从A启动并且C已经从B启动并且D已经从C启动.现在我在活动D中有一个名为"删除"的按钮.如果假设,我按下活动D中的"删除"按钮,然后应从历史堆栈中删除活动B和活动C. 在活动D中按回键应显示活动A而不是C.我不知道如何实现这一点.任何人都可以帮我解决这个问题吗?
Riv*_*Kid 31
我不确定您是否可以直接以编程方式从历史记录中删除活动,但如果您使用startActivityForResult()而不是startActivity(),则根据活动的返回值,您可以立即finish()使用前任活动来模拟您想要的行为.通过在所有活动中使用此方法,您可以将此行为级联活动堆栈,以允许您从活动D转到活动A.
我知道这不是你的情况,但是如果你在开始活动之前知道你不希望前任留下来,你可以finish()在之后立即打电话startActivity().
请参阅常见任务中的 "新屏幕的生命周期"部分以及如何在Android中执行这些操作
mde*_*lmo 21
我同意@RivieraKid,但我想到另一种方式:当你按"删除"时,你将自定义标志设置为true.
覆盖后退键事件:
public void onBackPressed() {
if (!remove){
super.onBackPressed();
}else{
Intent goToA = new Intent((this,ActivityA.class););
goToA.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(goToA);
}
}
Run Code Online (Sandbox Code Playgroud)
你觉得这样做你想要的吗?
祝好运.
| 归档时间: |
|
| 查看次数: |
26069 次 |
| 最近记录: |