我正在航行:
Main activity
至Activity 2
Activity 2
至Activity 3
Activity 3
至Activity 4
通过Intent
。
我还创建了菜单,以便用户可以直接从Activity 4
导航到Main activity
。
但是在使用菜单从Activity 4
导航到Main activity
之后,当我按下时,我需要Activity 3
而不是退出应用程序。
我试过了:
@Override
public void onBackPressed() {
super.onBackPressed();
MainActivity.this.finish();
}
但没有收获。有什么建议吗?
答案 0 :(得分:6)
从第4个活动导航到主要活动时,只需尝试此代码即可。
Intent inMain=new Intent(Activity4.this, MainActivity.class);
inMain.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(inMain);
注意:
在您的情况下,此代码会清除以前的活动并启动主要活动,并且在Backstack中没有任何活动。
答案 1 :(得分:3)
您可以设置标记Intent.FLAG_ACTIVITY_CLEAR_TOP
以完成所有中间活动,并且您的被调用活动将显示在活动堆栈的顶部。
答案 2 :(得分:2)
根据您的意图使用标志Intent.FLAG_ACTIVITY_CLEAR_TOP。更多细节 -
答案 3 :(得分:1)
使用clear top flag
调用startActivity方法 startActivity(new Intent(this, UI.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
答案 4 :(得分:1)
您需要更仔细地考虑“back stack”。
究竟发生了什么,您的后台堆栈填充如下:
Main activity -> Activity 2 -> Activity 3 -> Activity 4
然后从Activity 4
启动您的Main Activity
。所以你的筹码变成了:
Main activity -> Activity 2 -> Activity 3 -> Main Activity
因此,当您按下时,您将进入Activity 3
。
解决方案:
当您远离它们时,可以在每个finish()
上致电Activity
。或使用Intent.FLAG_ACTIVITY_CLEAR_TOP
清除所有中间Activities
。
有关Intent.FLAG_ACTIVITY_CLEAR_TOP的更多信息。
答案 5 :(得分:1)
当您返回MainActivity
时,您需要使用Intent.FLAG_ACTIVITY_CLEAR_TOP
上的Intent
。这是您可以在goHome
中使用Activity
方法的示例:
public void goHome ()
{
Intent homeIntent = new Intent();
homeIntent.setClass(this, MainActivity.class);
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeIntent);
}
答案 6 :(得分:0)
在活动2和3中,在致电startActivity(intent)
后,请致电this.finish()
。这也是一个解决方案。
答案 7 :(得分:0)
当您转到下一个活动时完成上一个活动意味着在finish();
之后写startactivity(intent);
并在下面写下代码,以便从第四个活动的按钮点击事件开始第一个活动。
Intent in1=new Intent(Act4.this, Act1.class);
startActivity(in1);
finish();