2

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

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

  1-->2-->3-->4-->

当我进入 4 屏幕时,我有取消按钮

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

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

请给我一个例子。

4

3 回答 3

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() ,例如,您可以在其中使用来自意图的数据。

如果您希望将这些行为作为您的活动的默认行为,请将这些标志放在 android 清单中的活动声明中。

于 2011-03-28T09:01:39.360 回答
0

//对于屏幕4上的Back btn

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);
    }
于 2011-03-28T08:21:02.367 回答
0

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

于 2011-03-28T07:16:18.800 回答