2

我从以下位置导航:

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

通过Intent.

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

我试过了:

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

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

4

8 回答 8

6

Just try this code when you navigate from 4th Activity to Main Activity.

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

Note:

This code in your case, clears the previous activities and launches the main activity with no activity in the backstack.

于 2012-06-20T09:09:21.003 回答
3

You can set flag Intent.FLAG_ACTIVITY_CLEAR_TOP to finish all the intermediate activities and your called activity will come to top of the activity stack.

于 2012-06-20T09:09:16.847 回答
2

根据您的意图使用标志 Intent.FLAG_ACTIVITY_CLEAR_TOP。有关更多详细信息 -

FLAG_ACTIVITY_CLEAR_TOP

于 2012-06-20T09:07:36.003 回答
1

call startActivity Method using clear top flag

   startActivity(new Intent(this, UI.class)
  .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
于 2012-06-20T09:09:49.810 回答
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);
}
于 2012-06-20T09:14:26.053 回答
1

您需要更仔细地考虑您的“后台堆栈”。

究竟发生了什么,您的后台堆栈填充如下:

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的更多信息。

于 2012-06-20T09:12:08.760 回答
0

In activity 2 and 3, after calling startActivity(intent), call this.finish(). This will also be one solution.

于 2012-06-20T09:10:06.200 回答
0

当您转到下一个活动时完成上一个活动意味着finish();startactivity(intent);下面编写代码以从第四个活动的按钮单击事件开始第一个活动。

Intent in1=new Intent(Act4.this, Act1.class);
startActivity(in1);
finish();
于 2012-06-20T09:13:12.180 回答