【发布时间】:2011-04-27 19:19:27
【问题描述】:
您好,我的应用程序现在是这样工作的..
Main -> SEARCH -> ActivityA -> SEARCH -> ActivityB
当我从 ActivityB 点击返回时,我想做以下操作
主要
即我想跳过活动 ActivityA 和 SEARCH。我知道我必须使用 FLAG,但是如何使用?
【问题讨论】:
您好,我的应用程序现在是这样工作的..
Main -> SEARCH -> ActivityA -> SEARCH -> ActivityB
当我从 ActivityB 点击返回时,我想做以下操作
主要
即我想跳过活动 ActivityA 和 SEARCH。我知道我必须使用 FLAG,但是如何使用?
【问题讨论】:
这可能会有所帮助 Android: Clear the back stack
【讨论】:
你可以这样做:
在 SearchActivity 中
Intent i = new Intent(this, ActivityA.class);
i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
在活动A中
Intent i = new Intent(this, SearchActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
这将带您从 B 回到搜索,然后按两次后退按钮回到主。
但是
如果您从 Main 到 Search 再到 A 到 Search,然后点击返回按钮,您会从 Search 到 Search 再到 Main。 (搜索的两个实例,可能不是你想要的)
最好将 Activity 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);
}
【讨论】: