我最近开始通过用片段替换“所有”活动来重构我的 Android 应用程序。在现在的状态下,它的表现比以前差了很多……
我的问题在于“向上导航”、回栈行为和将片段放在前面时对片段的一般“重新绘制”。
所以我在我的用户界面中创建了一个逻辑层次的片段,当用户在主菜单中时,不应该显示“向上”按钮。当用户在任何其他片段中时,向上按钮应将用户带回主菜单。
当我开始实现这个时,我只是放了一个
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
在我的片段的 onResume 方法中。这将按预期工作,直到主菜单从后堆栈(或主页导航)移到前面。然后不调用 onResume() 方法。
当用户在应用程序的其他地方时想要“重新绘制”片段似乎是大部分开发人员想要做的事情。我已经阅读了一些解决方案,基本上包括监听 backstack 更改,然后为即将返回的片段调用 onResume()。这个解决方案感觉就像一个丑陋的黑客,你不应该在真正的应用程序中拥有。那么大型应用程序的开发人员如何处理这个问题呢?最佳做法是什么?还是我错过了一些原则,说明如何根本不将自己编码到这个角落?
我必须说,我认为 Fragment 的 Android 开发页面几乎是在说生命周期:
“管理片段的生命周期很像管理活动的生命周期”
“已恢复:片段在正在运行的活动中可见。”
此信息意味着当片段从不可见变为可见时应调用 onResume()。
另外,我提供导航的解决方案显然不正确,关于如何获得正确行为的任何提示?
谢谢你的帮助!