【发布时间】:2011-05-19 13:41:29
【问题描述】:
我已经阅读了几篇关于使用它的帖子,但一定遗漏了一些东西,因为它不适合我。我的活动 A 在清单中有 launchmode="singleTop" 。它使用launchmode="singleInstance" 启动活动B。活动 B 打开浏览器并接收并返回意图,这就是它是单实例的原因。我正在尝试覆盖返回按钮,以便将用户发送回活动 A,然后可以按返回离开活动,而不是再次返回活动 B。
// activity B
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) onBackPressed();
return super.onKeyDown(keyCode, event);
}
@Override
public void onBackPressed() {
startActivity(new Intent(this, UI.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
return;
}
从浏览器返回后,栈... A,B,浏览器,B
我希望这段代码将堆栈更改为... 一种 ...因此,再次按下返回会将用户带回主屏幕。
相反,它似乎将堆栈更改为... A,B,浏览器,B,A ...就好像那些标志不存在一样。
我尝试在 startActivity 之后在活动 B 中调用 finish(),但随后返回按钮将我再次带回浏览器!
我错过了什么?
【问题讨论】:
标签: java android android-intent android-activity android-manifest