Android 安卓:点击“上一步”删除一系列活动

Android 安卓:点击“上一步”删除一系列活动,android,android-activity,Android,Android Activity,你好,我的应用程序现在是这样工作的 主->搜索->活动A->搜索->活动B 当我从ActivityB单击back时,我想执行以下操作 Main这可能有帮助吗 我只需要像这样覆盖搜索活动中的后退按钮 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)

你好,我的应用程序现在是这样工作的

主->搜索->活动A->搜索->活动B

当我从ActivityB单击back时,我想执行以下操作

Main这可能有帮助吗

我只需要像这样覆盖搜索活动中的后退按钮

 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event)  {
     if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
         Log.d(TAG, "back pressed");
         Intent intent = new Intent(this, MainActivity.class);
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         startActivity(intent);
     }
     return super.onKeyDown(keyCode, event);
 }
你可以这样做:

在搜索活动中

Intent i = new Intent(this, ActivityA.class);
i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
在活动中

Intent i = new Intent(this, SearchActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
按下两次后退按钮,您将从B返回到搜索,然后返回到Main

但是

如果您从“主搜索”转到“主搜索”,然后单击“后退”按钮,您将从“搜索”转到“搜索”再转到“主搜索”。(两个搜索实例,可能不是您想要的)

最好将活动A中的标志设置为:

Intent i = new Intent(this, SearchActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(i);
这将停止上述行为,并在您从B回击时仍能满足您的需求