按后退按钮导航到菜单

时间:2012-06-20 09:04:30

标签: android android-activity

我正在航行:

  • Main activityActivity 2
  • Activity 2Activity 3
  • Activity 3Activity 4

通过Intent

我还创建了菜单,以便用户可以直接从Activity 4导航到Main activity
但是在使用菜单从Activity 4导航到Main activity之后,当我按下时,我需要Activity 3而不是退出应用程序

我试过了:

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

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

8 个答案:

答案 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。更多细节 -

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();