Android:点击返回删除一系列活动



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

Main -> SEARCH -> activita -> SEARCH -> activitb

当我从ActivityB点击返回时,我想做以下操作

Main <- SEARCH <- ActivityB

。我想跳过活动activita和SEARCH。我知道我必须使用FLAG,但是怎么使用呢?

可能会有帮助Android:清空backstack

你可以这样做:

在SearchActivity

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

Intent i = new Intent(this, SearchActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);

按两次返回键,从B键返回到搜索键,然后返回到主键。

然而

如果你从主菜单转到搜索菜单,再按A键转到搜索菜单,然后按后退键,你会从搜索菜单转到搜索菜单再转到主菜单。(两个搜索实例,可能不是你想要的)

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

Intent i = new Intent(this, SearchActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(i);

这将停止上述行为,并仍然给你你想要的,当你从B

我只需要重写搜索活动中的后退按钮,像这样

 @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);
 }

最新更新