Android 按“后退”按钮导航到菜单

Android 按“后退”按钮导航到菜单,android,android-activity,Android,Android Activity,我从以下位置导航: 主要活动至活动2 活动2至活动3 活动3至活动4 通过意图 我还创建了菜单,以便用户可以直接从活动4导航到主要活动但在使用菜单从活动4导航到主活动后,当我按back键时,它会将我带到活动3,而不是退出应用程序 我试过: @Override public void onBackPressed() { super.onBackPressed(); MainActivity.this.finish(); } 但没有收获。有什么建议吗?使用标志Intent。标志

我从以下位置导航:

  • 主要活动
    活动2
  • 活动2
    活动3
  • 活动3
    活动4
通过
意图

我还创建了菜单,以便用户可以直接从
活动4
导航到
主要活动

但在使用菜单从
活动4
导航到
主活动
后,当我按back键时,它会将我带到
活动3
,而不是退出应用程序

我试过:

@Override
public void onBackPressed() {
    super.onBackPressed();
    MainActivity.this.finish();
}

但没有收获。有什么建议吗?

使用标志Intent。标志活动\u清除\u顶部与您的意图一致。更多细节-


您可以设置flag
Intent。flag\u ACTIVITY\u CLEAR\u TOP
以完成所有中间活动,您调用的活动将位于活动堆栈的顶部。

从第四个活动导航到主活动时,只需尝试此代码即可

Intent inMain=new Intent(Activity4.this, MainActivity.class);
inMain.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(inMain);
注:


在您的情况下,此代码将清除以前的活动,并启动主活动,但后台没有活动。

使用clear top标志调用startActivity方法

   startActivity(new Intent(this, UI.class)
  .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));

在活动2和3中,在调用
startActivity(intent)
后,调用
this.finish()
。这也是一个解决方案。

你需要更仔细地考虑你的“。” 确切地说,您的后堆栈将按如下方式填充:

Main activity -> Activity 2 -> Activity 3 -> Activity 4
然后从
活动4
启动
主活动。因此,堆栈变为:

Main activity -> Activity 2 -> Activity 3 -> Main Activity
因此,当您按back键时,您将在
活动3
中着陆

解决方案:

当您离开每个
活动时,可以调用
finish()
。或者使用
Intent.FLAG\u ACTIVITY\u CLEAR\u TOP
清除所有中间
活动


更多信息。

完成上一个活动当您转到下一个活动时,表示写入
Finish()之后<代码>开始触觉(意图)并在下面编写从第四个活动的按钮单击事件开始第一个活动的代码

Intent in1=new Intent(Act4.this, Act1.class);
startActivity(in1);
finish();

返回到
main活动时
需要在
Intent上使用
Intent.FLAG\u ACTIVITY\u CLEAR\u TOP
。这是一个可以在
活动中使用的
goHome
方法示例:

public void goHome ()
{
    Intent homeIntent = new Intent();
    homeIntent.setClass(this, MainActivity.class);
    homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(homeIntent);
}

请完成当前活动,转到其他活动。非常感谢大家。堆叠溢出的岩石!如果你得到的答案是,别忘了标记为acceptI我想答案是[here][1][1]:在上面链接的
manifest.xml
中,为什么它是
而不是
?不,在我的情况下它不起作用,好像我想从3回到2,我无法导航,在我的情况下,它不起作用,好像我想从3回到2,我不能navigate@GAMA您可以使用intent.no(不使用intent)导航到activity3到activity2。我说的是使用后退按钮从第二幕转到第三幕。@GAMA使用此代码,您将转到第三幕到第二幕,Intent in1=新Intent(act3.this,act2.class);星触觉(in1);完成();不,我不是按代码从3导航到2。“后退”按钮应该注意这一点,因此我没有使用
finish()