Java 使用转换完成活动首先显示活动堆栈中的上一个活动,然后转换到新活动

Java 使用转换完成活动首先显示活动堆栈中的上一个活动,然后转换到新活动,java,android,android-studio,android-layout,Java,Android,Android Studio,Android Layout,我的Android应用程序中有两个活动——活动A和活动B。 当用户按下活动a上的按钮时,他将被导航到活动B。 我希望活动A在转到下一个活动后关闭,并从活动堆栈中完全删除。 我尝试添加intent.setFlags(intent.FLAG_ACTIVITY_CLEAR_TOP | intent.FLAG_ACTIVITY_NEW_TASK),但这不起作用,因为按下“后退”按钮后仍可以访问活动A 我添加了finishafinity(),这是有效的,但在转换时,活动堆栈中的上一个活动将可见,然后转到活

我的Android应用程序中有两个活动——活动A和活动B。 当用户按下活动a上的按钮时,他将被导航到活动B。 我希望活动A在转到下一个活动后关闭,并从活动堆栈中完全删除。 我尝试添加
intent.setFlags(intent.FLAG_ACTIVITY_CLEAR_TOP | intent.FLAG_ACTIVITY_NEW_TASK),但这不起作用,因为按下“后退”按钮后仍可以访问活动A

我添加了
finishafinity(),这是有效的,但在转换时,活动堆栈中的上一个活动将可见,然后转到活动B

录像带 (此处显示应用程序抽屉,然后转到活动B)-

代码-

ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(MainActivity.this);
Intent i = new Intent(MainActivity.this, MainActivity2.class);
startActivity(i, options.toBundle());
finishAffinity();
是否进行了任何修复,以使上一个活动不可见且活动也已关闭


编辑:我尝试了
finish()
finishAfterTransition()
supportFinishAfterTransition()
而不是
finishafinity()
,但仍然可以看到上一个屏幕。 所以我想
finishAfterTransition()有一个问题


在活动B中使用此功能,按下后退按钮将退出应用程序。不要使用任何
finish()
有限性有限性()。这将提供一个平滑的过渡

您必须使用finish,但如下所示:

startActivity(Your Activity here)
然后
Finish()

如果您执行反向操作,您可以看到短时间的黑屏。这样做可以解决这个问题。我通过向清单文件中的活动(必须从堆栈中删除)添加
android:noHistory=“true”
属性来解决这个问题。 更改后,无需在java代码中使用
finish()

方法2-
请参考@Pratyay的答案以了解解决方法。

这并不能解决问题。即使在使用
finish()
后,上一个屏幕仍然可见。请查看编辑后的答案。明白了!谢谢,请参考我在下面看到的方法。此方法会增加应用程序使用的内存,因为活动会堆积起来,并且不能总是这样做(例如,如果我们不想在按下Back press时关闭活动)。您好,我只做了此操作,请查看上面的代码
startActivity(Your Activity here)