我需要一些关于活动堆栈的帮助。
在我的应用程序中,我有 6 个屏幕用户导航
1-->2-->3-->4-->
当我进入 4 屏幕时,我有取消按钮
当用户单击该按钮时,它应该转到第二个屏幕并
当用户单击键盘上的后退按钮时,它应该转到已经在活动堆栈中的 1 个屏幕如何执行此操作。
请给我一个例子。
我需要一些关于活动堆栈的帮助。
在我的应用程序中,我有 6 个屏幕用户导航
1-->2-->3-->4-->
当我进入 4 屏幕时,我有取消按钮
当用户单击该按钮时,它应该转到第二个屏幕并
当用户单击键盘上的后退按钮时,它应该转到已经在活动堆栈中的 1 个屏幕如何执行此操作。
请给我一个例子。
只需使用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 清单中的活动声明中。
//对于屏幕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);
}
使用onBackPressed()
和意图机制来启动或重新显示必要的活动。