如何显示活动堆栈中的活动

时间:2011-03-28 07:09:00

标签: android android-activity activity-stack

我需要一些关于活动堆栈的帮助。

在我的应用程序中,我有6个屏幕用户从

导航
  1-->2-->3-->4-->

当我转到4屏幕时,我有取消按钮

当用户点击该按钮时,它应该转到第二个屏幕并

当用户点击键盘上的后退按钮时,它应该转到 1已经在活动堆栈中的屏幕如何执行此操作。

请举个例子。

3 个答案:

答案 0 :(得分:3)

只需使用FLAG_ACTIVITY_CLEAR_TOP

即可

当用户点击按钮时:

Intent intent = new Intent(ActivityD.this, ActivityB.class);
Intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

当用户按下时:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        Intent intent = new Intent(ActivityD.this, ActivityA.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivity(intent);
    }
    return super.onKeyDown(keyCode, event);
}

此代码将使用户进行第一次活动。由于FLAG_ACTIVITY_SINGLE_TOP,将不会重新创建活动。当活动已经在后台堆栈时,将调用onNewIntent(),您可以在其中使用来自intent的数据。

如果您希望此类行为作为您的活动的默认行为,请将这些标记放入android清单中,并将其置于活动声明中。

答案 1 :(得分:0)

使用onBackPressed()和意图机制启动或重新展示必要的活动。

答案 2 :(得分:0)

// For Back btn on screen 4

Onclick(View v)
{
if(v==Backbtn)
{
finish();
startActivity(new intent(this,SecondActivity.class));
}
}

//返回按键返回1个屏幕

public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
        case KeyEvent.KEYCODE_BACK:
            startActivity(new intent(this,FirstActivity.class));
                     return true;
        }
        return super.onKeyDown(keyCode, event);
    }