在不同程序包中的活动之间实施底部导航的最佳方法是什么?这些软件包以自上而下的方式相互导入。
我将我的项目构造为一组程序包;本质上分为主app
,许多中间PACKAGE
和最后的end
包:
app
-提供主要应用程序并用作项目构建目标。它包含一个活动Main
,为应用程序提供了主要的入口点。导航图仅将唯一的片段映射到每个导入的ACTIVITY
所提供的PACKAGE
上。PACKAGE
-提供单个活动ACTIVITY
,以管理专门的任务。导航图管理支持活动的各个片段之间的关系; 另外它包含指向从Final
导入的end
活动的链接。end
-提供单个活动Final
,每个导入的PACKAGE
都将其用作其导航图的终止导航链接。因此,每个程序包都包含一个活动,一个或多个片段以及一个导航图,该导航图管理它们与指向下一个程序包中按app.Main > PACKAGE.ACTIVITY > end.Final
顺序指向该活动的节点之间的路由。
鉴于此结构,我想向每个活动|Main|...|Final|
添加底部导航ACTIVITY
,以便有一个指向Main
的链接和另一个指向Final
的链接。向前链接到Final
很容易,因为它已经成为每个PACKAGE
导航图中的目标,但是我不确定链接回Main
的最佳方法。同样,我想提供|Main|ACTIVITY|...|
到Final
的底部导航,以便用户返回到先前的ACTIVITY
或Main
。
为父包中的活动提供导航目标的最佳方法是什么?对我来说,以下似乎可行
app
分别导入PACKAGE
和end
,每个PACKAGE
分别导入app
和end
,而end
分别导入{ {1}}和PACKAGE
。这不是很干燥,但是它将使所有活动都可以普遍访问。app
作为列表传递到Main
,并以编程方式将其添加到导航菜单。同样,将ACTIVITY
和Main
作为列表传递给ACTIVITY
。考虑到活动具有生命周期,在这里我不确定,是否应该将活动类或其实例传递给子活动?这样做的好处是,如果缺少堆栈,我可以很容易地创建它。Final
(即包含ACTIVITY
)和Main
(即包含Final
的路由和Main
)。在此之后,在事实之后创建后堆栈变得很棘手。ACTIVITY
的{{1}}中parentAttribute
下的每个活动设置<activity/>
以提供必要的导航目标?在这里,我不确定如何最好地将其添加到底部导航图/菜单中?同样,有必要根据到达PACKAGES
的路线,以编程方式设置manifest.xml
。根据1中提供的对活动的访问方式,我不确定使此类目标可访问的最佳方法是什么?
parentAttrbiute
来引用此类项目吗?是否可以编写自定义导航目标来表示此类项目。Final
使用的导航菜单中提供的菜单吗?可以做到这一点并支持导航图提供的目标吗,也就是可以同时覆盖Placeholder
和一起使用BottomNavigationView
吗?注意::虽然我看到了一些类似的问题和答案,但没有看到任何单独的程序包中涉及活动的问题。
答案 0 :(得分:0)
我通过询问程序包管理器以确定我的程序包名称下应用程序中可用的活动来解决了这个问题。
在MANIFEST.xml
下向每个活动添加元数据,使我能够筛选出我想参考的活动。添加android:label
和android:icon
属性使我可以为导航视图中的按钮提供标签和图标,并在应用程序栏上显示它们。此外,我可以为每个活动创建意图并将其设置在菜单项上(其中一个android文档提到,任何未直接处理的menuItem都会调用其intent属性)。
我将所有这些都包装到一个界面中,现在可以将其添加到我希望在导航组件所支持的导航图之外导航的活动上。
注意:可能有深层链接可达到此目的,但我还没有看到一个很好的例子。