从堆栈中删除活动

时间:2012-06-07 14:29:54

标签: android android-activity

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

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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();
}

答案 2 :(得分:0)

FLAG_ACTIVITY_NO_HISTORY

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

所以,你可以从你的

实现这个

AndroidManifest.xml文件,

android:noHistory="true"