使用转换完成 Activity 会先显示 activity 堆栈中的前一个 Activity,然后转换到新的 Activity
Finishing an Activity with transition shows the previous Activity from the activity stack first and then transitions to the new Activity
我的 Android 应用程序中有 2 个活动 - Activity A 和 Activity B。
当用户按下 Activity A 上的按钮时,他被导航到 Activity B。
我希望 Activity A 在转到下一个 activity 后关闭,并从 activity 堆栈中完全删除。
我尝试添加 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
,但这不起作用,因为 Activity A 在按下后退按钮后仍然可以访问。
我添加了 finishAffinity();
,这有效,但是在转换时,activity 堆栈中的前一个 activity 变得可见,然后它转到 Activity B.
视频
(这里显示应用程序抽屉,然后转到Activity B)-
代码-
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(MainActivity.this);
Intent i = new Intent(MainActivity.this, MainActivity2.class);
startActivity(i, options.toBundle());
finishAffinity();
是否修复了之前的 activity 不可见并且 activity 也关闭的问题?
编辑: 我尝试了 finish()
、finishAfterTransition()
和 supportFinishAfterTransition()
而不是 finishAffinity()
,但前一个屏幕仍然可见.
所以我猜 finishAfterTransition()
有问题
@Override
public void onBackPressed() {
finishAffinity();
}
在 Activity B 中使用此功能,这将在按下后退按钮时退出应用程序。并且不要在 Activity A 中使用任何 finish();
或 finishAffinity();
。这将提供一个平滑的过渡
你必须使用 finish 但像这样:
startActivity(Your Activity here)
然后 Finish()
如果你做反向你可以看到短时间的黑屏这样做
我通过将 android:noHistory="true"
属性添加到清单文件中的 activity(必须从堆栈中删除)解决了这个问题。
改完后java的代码就不用再用finish()
了。
方法二 -
参考@Pratyay 的回答以获得解决方法。
我的 Android 应用程序中有 2 个活动 - Activity A 和 Activity B。
当用户按下 Activity A 上的按钮时,他被导航到 Activity B。
我希望 Activity A 在转到下一个 activity 后关闭,并从 activity 堆栈中完全删除。
我尝试添加 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
,但这不起作用,因为 Activity A 在按下后退按钮后仍然可以访问。
我添加了 finishAffinity();
,这有效,但是在转换时,activity 堆栈中的前一个 activity 变得可见,然后它转到 Activity B.
视频 (这里显示应用程序抽屉,然后转到Activity B)-
代码-
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(MainActivity.this);
Intent i = new Intent(MainActivity.this, MainActivity2.class);
startActivity(i, options.toBundle());
finishAffinity();
是否修复了之前的 activity 不可见并且 activity 也关闭的问题?
编辑: 我尝试了 finish()
、finishAfterTransition()
和 supportFinishAfterTransition()
而不是 finishAffinity()
,但前一个屏幕仍然可见.
所以我猜 finishAfterTransition()
@Override
public void onBackPressed() {
finishAffinity();
}
在 Activity B 中使用此功能,这将在按下后退按钮时退出应用程序。并且不要在 Activity A 中使用任何 finish();
或 finishAffinity();
。这将提供一个平滑的过渡
你必须使用 finish 但像这样:
startActivity(Your Activity here)
然后 Finish()
如果你做反向你可以看到短时间的黑屏这样做
我通过将 android:noHistory="true"
属性添加到清单文件中的 activity(必须从堆栈中删除)解决了这个问题。
改完后java的代码就不用再用finish()
了。
方法二 - 参考@Pratyay 的回答以获得解决方法。