假设我在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(意向);
由于
答案 0 :(得分:1)
您可以调用finish()
的{{1}}方法。当你在Activity_C
答案 1 :(得分:0)
基本上你可以在你的活动上调用finish(),在AndroidManifest.xml中使用noHistory标志,或者在你的意图中添加意图标志Intent.FLAG_ACTIVITY_NO_HISTORY。
答案 2 :(得分:0)
如果你真的需要,你可以customize the back stack你的活动,但在这种情况下,你想要的只是从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()。 如果您需要,我可以为您提供更多相关信息。