Java 使用转换完成活动首先显示活动堆栈中的上一个活动,然后转换到新活动
我的Android应用程序中有两个活动——活动A和活动B。 当用户按下活动a上的按钮时,他将被导航到活动B。 我希望活动A在转到下一个活动后关闭,并从活动堆栈中完全删除。 我尝试添加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(),这是有效的,但在转换时,活动堆栈中的上一个活动将可见,然后转到活
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()代码>或有限性有限性()活动A中的代码>。这将提供一个平滑的过渡您必须使用finish,但如下所示:
startActivity(Your Activity here)
然后Finish()
如果您执行反向操作,您可以看到短时间的黑屏。这样做可以解决这个问题。我通过向清单文件中的活动(必须从堆栈中删除)添加android:noHistory=“true”
属性来解决这个问题。
更改后,无需在java代码中使用finish()
方法2-
请参考@Pratyay的答案以了解解决方法。这并不能解决问题。即使在使用finish()
后,上一个屏幕仍然可见。请查看编辑后的答案。明白了!谢谢,请参考我在下面看到的方法。此方法会增加应用程序使用的内存,因为活动会堆积起来,并且不能总是这样做(例如,如果我们不想在按下Back press时关闭活动)。您好,我只做了此操作,请查看上面的代码
startActivity(Your Activity here)