在活动堆栈上设置活动

时间:2012-12-03 13:41:39

标签: android

我想将我新创建的活动设置为堆栈中唯一的活动并且也在它上面,所以当从A创建活动B时,我可以按回来从B返回主菜单

因此,这就是我所做的

public void onClick(View v) {
    Intent i = new Intent(this,B.class);

    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(i);

}

出于某种原因,在活动B开始后,按下后​​仍然会将我带到A。

我在这里缺少什么?

4 个答案:

答案 0 :(得分:3)

喜欢这个

public void onClick(View v) {
Intent i = new Intent(this,B.class);

i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
finish(); // to end the current activity
}

在startactivity(...)之后调用 finish(),以便A activity ll removed from the stack。当您按下后退按钮 A 活动时,不会在堆栈中。

答案 1 :(得分:1)

在活动A中调用startActivity(i)之后,必须调用finish(); - 完成活动。然后按回来不会带你到A!

答案 2 :(得分:1)

更改清单中的活动:

  <activity
            android:name=".ActivityA"
              android:noHistory="true"
 >
        </activity>

答案 3 :(得分:0)

这对我有用,我也是这样用的:

Intent myIntent = new Intent(this, b.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivityForResult(myIntent, 0);