0

当从活动 A 到 B 时,我想从堆栈中清除 A:所以当用户在活动 B 中按下后退按钮时,应用程序退出。

Intent intent = new Intent(A.this, B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

这些代码行不起作用 - 应用程序返回到活动 A。我也尝试过 OR 与 flag Intent.FLAG_ACTIVITY_NEW_TASK,结果相同。我其实也试过了FLAG_ACTIVITY_NO_HISTORY

我正在为我的应用程序使用 Android 2.2。

4

3 回答 3

1

只需在调用 startActivity() 后调用 finish()。它应该从堆栈中清除 Activity A。在代码中它看起来像这样:

Intent intent = new Intent(A.this, B.class);
startActivity(intent);
finish();
于 2012-06-07T15:06:51.213 回答
0

两种解决方案:在您的 B 活动中:

@Override
public void onBackPressed() {
    super.onBackPressed(); //not sure if this line is needed
    System.exit(0);
}

或者更好:使用 startActivityForResult 开始您的活动,并实现您的 A 活动的 onActivityResult 方法:

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
   finish();
}
于 2012-06-07T14:36:25.390 回答
0

FLAG_ACTIVITY_NO_HISTORY

如果设置,则新活动不会保留在历史堆栈中。一旦用户离开它,活动就完成了。这也可以使用 noHistory 属性进行设置。

所以,你可以从你的

AndroidManifest.xml 文件,

android:noHistory="true"

于 2012-06-07T16:12:40.527 回答