防止最后一个 Fragment 从 backstack 中移除

Prevent last Fragment from being removed from backstack

我目前正在写一个抽屉布局作为我的主要布局,当抽屉上的一个项目被点击时,我将使用一个嵌入式 FrameLayout 来保存每个“页面”。当应用程序首次启动时,将显示一个初始片段。其他片段可能 added/replaced 稍后,这很好,但是,我的问题是当用户单击第一个“初始片段”上的后退按钮时,我不希望从布局中删除该特定片段.目前,它正在被删除,它只显示一个没有其他内容的抽屉布局(这是有道理的)。如果初始片段是最后一个显示并且按下后退按钮,我希望应用程序自动退出,而不是删除该初始片段,然后再按一次后退按钮,然后退出。

我想做的事情:

有没有人有建议的方法或者可以想出更好的方法?谢谢

第一个要点听起来最干净。当背部被击中时,您不需要处理其他情况,对吗?如果是这样的话,代码行会更少(删除一行而不是添加几行)并且您可以保持默认的 Activity 方法不变。

我知道这与您的要求不完全相同,但我认为第一个要点非常明确,我不会尝试其他方法。

我已经使用我自己的堆栈片段在其中一个应用程序中实现了相同的功能。并且还实现了 onBackPressed 方法。

每次当用户点击抽屉中的项目时,我都会在堆栈中添加片段,并在其长度为 1 时向后按我完成 activity 消息。

点击项目 -- Add/replace 容器中的片段。

OnBackPressed -- 从堆栈中弹出片段,一旦它的最后一个我完成 activity。

希望这可以给你另一种选择。