我有一个应用程序,当用户导航时,它会替换容器中的碎片。(最初是基于android studio创建的方法,如果你启动一个新的项目并选择spinner导航)
我希望用户能够按下后退按钮来返回以前的页面,但不必按一百万次后退来退出应用。
我可以将碎片添加到后堆栈中,但这意味着可能会有一个巨大的堆栈,或者我必须手动找到最后一个实例并清除部分堆栈。如果我使用活动,我可以用SINGLE_TOP标志来启动我的intents。在替换碎片时,有没有一种等价的方法可以使用?
似乎没有对应的方法。
目前最好的选择是调用remove(fragment)作为事务的一部分,尽管这样做的缺点是它似乎会在堆栈中弹出任何在它上面的东西。
有一个新的Android jetpack组件,名为 Android导航组件 ,将帮助你获得预期的目标。这里有一个很好的 教程 在它上面,你还会发现使用的是 SingleTop
. 这篇文章描述了一个类似于哪个与你的用例相关的行。
在
app:launchSingleTop
是用来判断导航动作是否应该以单顶方式启动(即在后堆栈的顶部最多只有一个给定目标的副本)。这个功能类似于android.content.Intent.FLAG_ACTIVITY_SINGLE_TOP对活动的作用。