我需要一些关于活动堆栈的帮助。
在我的应用程序中,我有6个屏幕用户从
导航 1-->2-->3-->4-->
当我转到4屏幕时,我有取消按钮
当用户点击该按钮时,它应该转到第二个屏幕并
当用户点击键盘上的后退按钮时,它应该转到 1已经在活动堆栈中的屏幕如何执行此操作。
请举个例子。
答案 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);
}