Android:点击后退出一系列活动

时间:2011-04-27 09:41:20

标签: android android-activity

您好我的应用程序现在就这样工作..

主要 - >搜索 - > ActivityA - >搜索 - > ActivityB

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

Main< - SEARCH< - ActivityB

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

3 个答案:

答案 0 :(得分:2)

可能会有所帮助 Android: Clear the back stack

答案 1 :(得分:1)

你只是这样做:

在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返回搜索,然后在两次按下后退按钮时返回Main。

<强>然而

如果您从Main搜索到A搜索然后点击后退按钮,您将从Search to Search转到Main。 (两个搜索实例,可能不是你想要的)

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

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

这将停止上述行为,并在您从B

回击时仍然可以提供您想要的内容

答案 2 :(得分:0)

我必须覆盖SEARCH活动中的后退按钮,如此

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