这是一个来自McDonalds应用程序的示例,其中在菜单片段中有一个RecyclerView,当您单击显示完全相同的RecyclerView的任何元素时(仅具有更改的内容,这取决于所选元素),而下一个时间重复。如何实现完全相同的导航? (以及如何在如此复杂的结构中传输有关所选按钮的数据)谁已经遇到过这种情况?数据来自sql。

McDonalds example

最佳答案

我刚刚下载并检查了此应用。所以,这就是我的想法。

看起来“菜单”选项卡是Fragment。我们称之为MenuMainFragment。例如,单击“ Drinks”,我们将打开MenuGroupFragment之类的内容,而我们之前的片段将添加到backstack中。当我们在MenuGroupFragment中时,我们也可以单击任何元素,最后出现MenuItemsFragmentMenuGroupFragment也将返回堆栈)。单击此处的任何元素,显然可以打开ItemActivity。因此在任何情况下都存在3个深度级别。我认为,“流程”中的所有片段都是通过向其中传递一些信息来创建的。例如,在MenuGroupFragment中,我们传递类似于“ subgroupId”的内容,然后在数据库中找到与该“ subgroupId”相关的所有内容,依此类推。对我来说,这是最明显的情况。

不太明显的情况可能是只有一个Fragment具有自己的流管理,这更加困难,可以通过许多不同的实现来实现。可能可以通过使用Map<Int, List<Element>>来实现,其中是映射的键,是您的步骤,而值是与该步骤相关的元素列表。我认为将会进行一些检查,以确定是否要更改工具栏的图标,标题和onBackPressed()行为。

08-15 21:42