将相本无种,男儿当自强。这篇文章主要讲述使用循环片段依赖关系模块化单活动Android应用程序相关的知识,希望能为你提供帮助。
我们有一个带底栏导航的应用程序。导航在我们的MainActivity
。我们使用片段管理应用程序的不同屏幕之间的导航。例如。有:
- ProductFragment
- 登录片段
- CartFragment
- ProfileFragment
- SearchFragment
MainActivity
中,我们有一个方法pushFragment(Fragment fragment)
,负责用新的片段替换当前片段。在我们不同的片段之间存在很多依赖关系。例如。:- 用户可以从
ProductFragment
启动CartFragment
- 为了查看用户必须登录的某些产品数据(
LoginFragment
) LoginFragment
也用于ProfileFragment
- 通过
ProfileFragment
的“历史订单”,您还可以通过ProductFragment
显示产品详细信息。
文章图片
我们现在想要模块化我们的android应用程序,以利用Instant Apps,更快的构建时间和所有其他优势。理想情况下,我们希望为每个片段都有一个模块。然而,由于我刚才描述的依赖性,我们无法创建线性依赖性层次结构,也不知道如何构建我们的模块。
每次我们尝试从app模块中选择我们的第一个模块时,我们最终会遇到很多依赖项,我们也必须转移到新模块。
我们目前看到的唯一解决方案是改变我们在片段之间导航的方式,但我们无法想办法如何做到这一点。
答案我们找到了一个解决方案的开始:
我们有一个接口
NavigationHelper
,它声明了导航到其他片段的方法(startProfileFragment
,startLoginFragment
,startProductFragment
,...)。这个接口在我们的libBase中。它在Activity中实现,它位于app模块中。在片段中,我们将
context
中的onAttach
投射到NavigationHelper
(同时检查,上下文是一个NavigationHelper,否则抛出异常):private NavigationHelper mNavigationHelper;
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof NavigationHelper){
mNavigationHelper = (NavigationHelper) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement NavigationHelper");
}
}
然后你可以调用
mNavigationHelper.startProfileFragment()
来切换片段。【使用循环片段依赖关系模块化单活动Android应用程序】感谢@Andrey提醒我发布:)
推荐阅读
- 改善Meteor应用中项目结构的开发人员指南
- 从父活动android获取片段编辑文本值
- logcat错误android studio编程片段
- Android Stackoverflow错误(ViewGroup.jumpDrawablesToCurrentState)
- 在switch语句中将Android中的字符串从硬编码更改为字符串资源
- 键盘启动时,Android Fragment视图不会滚动
- Android片段文档含义
- 如何在android中的地图片段内中心线性布局()
- 在Google Apps脚本中格式化PDF附件(MailApp.sendEmail)