使用startActivity后如何才能返回上一个活动?

时间:2017-04-18 15:16:26

标签: android android-intent

假设我在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); // return 5

startActivity(意向);

由于

4 个答案:

答案 0 :(得分:1)

您可以调用finish()的{​​{1}}方法。当你在Activity_C

时,它会让你回到Activity_B

答案 1 :(得分:0)

基本上你可以在你的活动上调用finish(),在AndroidManifest.xml中使用noHistory标志,或者在你的意图中添加意图标志Intent.FLAG_ACTIVITY_NO_HISTORY。

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

答案 2 :(得分:0)

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

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

    super.onBackPressed();

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

答案 3 :(得分:0)

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

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