【问题标题】:How can I not return to a previous activity after using startActivity?使用 startActivity 后如何不返回上一个活动?
【发布时间】:2017-04-18 15:16:26
【问题描述】:

假设我使用 Android Studio 进行了三个活动:

Act_A

Act_B

Act_C

Act_A 调用 Act_B,Act_B 调用 Act_C:

Intent intent = new Intent(Act_A.class,Act_B.class);
startActivity(intent);

...

Intent intent = new Intent(Act_B.class,Act_C.class);
startActivity(intent);

在 Act_C 中执行一个进程,在该进程中它应该自动返回到 Act_B,为此执行类似的操作:

Intent intent = new Intent(Act_C.class,Act_B.class);
startActivity(intent);

此时,如果用户按下返回按钮,应该返回到Act_A,但恰好返回到Act_C,再次按下返回按钮返回到Act_B。

我的问题是:

有没有办法“删除”之前的状态,使其不会返回到之前的活动,或者有没有办法修改它以返回到我想要的活动?

问题是我必须从 Act_C 向 Act_B 返回一个值,而我不能使用 finish(),类似于以下内容:

在 Act_C 中:

Intent intent = Act_B.newIntent(getActivity(),5);// 返回 5

开始活动(意图);

谢谢

【问题讨论】:

  • 这并不能回答您的问题,但是您可以在您的应用中一起屏蔽历史记录。

标签: android android-intent


【解决方案1】:

您可以调用Activityfinish() 方法。当你在 Activity_C 时,它会让你回到 Activity_B

【讨论】:

  • 问题是我必须从 Act_C 向 Act_B 返回一个值,我不能使用完成,类似于以下内容: Intent intent = Act_B.newIntent(getActivity(),5);/ /return 5 startActivity(intent);
  • 你需要使用startActivityForResult()从Act_B打开Act_C
【解决方案2】:

如果你真的需要,你可以customize the back stack你的活动,但在这种情况下,你想要的似乎只是从 C 返回到 B,而不是从 C 开始 B .

换句话说,为了完成“在Act_C中执行一个进程,它应该自动返回给Act_B”,请执行以下操作而不是startActivity()

    super.onBackPressed();

这会将应用返回到 Act_B。然后如果用户按下后退按钮,他们将返回到您指定的 Act_A。

【讨论】:

  • 假设我已经启用了菜单的使用:@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) 在菜单中有一个带有返回箭头的按钮,与之相关的事件是什么?
  • @FabiánRomo:一般来说,您需要覆盖 onOptionsItemSelected() 方法 (developer.android.com/guide/topics/ui/…)。除此之外,如果没有看到您的代码,很难说出很多东西。您可能需要创建一个新问题并显示您的代码。
【解决方案3】:

基本上,您可以在您的 Activity 上调用 finish(),在 AndroidManifest.xml 中为该 Activity 使用 noHistory 标志,或者将 Intent 标志 Intent.FLAG_ACTIVITY_NO_HISTORY 添加到您的 Intent 中。

这篇文章应该可以帮助你:Removing an activity from the history stack

【讨论】:

    【解决方案4】:

    在 Act_C 中执行一个进程,它应该自动返回到 Act_B

    如果您只想从特定活动返回一个值,请不要使用 startActivity(Intent),使用 startActivityForResult(Intent, int) 并在回调 (OnActivityResult) 上处理返回值。然后覆盖 onFinish() 方法,以便在退出时可以 setResult() 。 如果您需要,我可以为您提供更多背景信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-30
      相关资源
      最近更新 更多