防止最后一个片段从后台移除

时间:2017-05-04 17:05:46

标签: android android-fragments back-button fragment-backstack

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

我想过的事情:

  • 不将第一个片段添加到Backstack。 (如果我这样做,我可以将它与片段的类名进行比较,这是一个稍长的字符串,或者我可以在放置第一个片段后使用布尔值(而不是添加到backstack),布尔值设置现在可以添加片段。
  • 覆盖活动的onBackPressed功能

有没有人建议这样做或者想出更好的方法?感谢

2 个答案:

答案 0 :(得分:3)

第一个子弹点听起来最干净。你没有其他需要在背部被击中时处理条件,对吗?如果是这种情况,则代码行数较少(删除一行代码而不是添加多行代码),您可以按原样保留默认的Activity方法。

我知道这不完全是你提出的要求,但我认为第一个要点是如此干净,以至于我不会尝试别的东西。

答案 1 :(得分:0)

我使用自己的Stack片段在其中一个app中实现了相同的功能。并且还实现了onBackPressed方法。

每当用户点击抽屉中的项目时,我会在堆栈中添加片段,并在其长度为1时按下后按我的信息完成活动。

单击项目 - 在容器中添加/替换片段。

OnBackPressed - 从堆栈中弹出片段,最后一个片段完成活动。

希望这可以为您提供另一种选择。