Intent - Activity 的 addBackStack(null)
Posted
技术标签:
【中文标题】Intent - Activity 的 addBackStack(null)【英文标题】:Intent - addBackStack(null) for Activity 【发布时间】:2021-04-14 00:02:23 【问题描述】:我们可以将 addBackStack(null) 与 Fragments 一起使用,这样当我们按下返回时,片段就不会打开。但是我们如何使用 Activity 来做到这一点?我找不到关于那个的用法。 我也试过这个:
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
但这不起作用。
最后addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
正在工作,但是当我将应用程序带到后台并重新打开它时,这个活动被破坏了。
【问题讨论】:
我假设您在谈论addToBackStack()
来自 FragmentTransaction
。此方法将当前FragmentTransaction
添加到后台堆栈而不是删除它。然后,当您退出另一个Fragment
时,您将返回到后堆栈中的那个。这是您想要实现的目标吗?
我记得当我们将addToBackStack
设置为null
时,必须删除当前片段。但也许我记错了。我解决了这个问题。感谢您的评论。
我不太确定你的问题是什么,这就是我要求澄清的原因。活动会自动添加到后台堆栈,并且不需要额外的标志来工作。在我看来,您想要实现与您所要求的 相反 的内容,即从后台堆栈中 remove 某些内容,而不是像您的问题所暗示的那样添加它。通过完成您的旧Activity
,您正在实现这一目标,因此您的解决方案似乎是正确的。
【参考方案1】:
我知道不需要标志。打开其他活动时添加finish()解决了这个问题。
Intent i = new Intent(MainActivity.this, NextActivity.class);
finish();
startActivity(i);
【讨论】:
以上是关于Intent - Activity 的 addBackStack(null)的主要内容,如果未能解决你的问题,请参考以下文章
activity和Task 有关的 Intent启动方式结合intent.setFlags()
Intent.FLAG_ACTIVITY_CLEAR_TASK 和 Intent.FLAG_ACTIVITY_TASK_ON_HOME 的区别
Activity启动模式及Intent的Flag属性对Intent传值的影响
怎样避免使用Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK之后的黑屏问题