我正在开发一个由两个图书馆项目组成的应用程序。两个库项目都由实际应用程序使用。
第一个图书馆项目可以看作是主图书馆项目,因为它包含整个应用程序的仪表板形式的主菜单。从仪表板中的一个条目,用户可以启动作为第二个库项目的一部分的活动。
所有活动以及可以从此活动开始的任何活动也是第二个图书馆项目的一部分。所以第二个图书馆项目对第一个图书馆项目一无所知。
在操作流程结束时,用户应通过单击一个按钮返回仪表板活动。所以我需要清除整个活动堆栈,不包括第一个活动(仪表板)。通常我会通过使用标志FLAG_ACTIVITY_CLEAR_TOP启动Dashboard活动来完成此操作。使用FLAG_ACTIVITY_NO_HISTORY也不是一个选项,因为我需要历史记录。
但正如我之前提到的,第二个库项目的任何组件都不应该对主库项目有任何了解。因此,使用标志调用Dashboard活动是没有解决方案的。
所以我正在寻找一种方法来完成第二个库项目的所有活动,但不是主库项目中的仪表板活动。
答案 0 :(得分:2)
当仪表板调用第二个活动时,将类名(作为字符串)捆绑在intent中。在第二个活动中,您可以使用该类名来创建返回的意图。
使用MyActivity.getClass().getName()
形成字符串。
使用Class.forName(className)
让课程恢复。
修改:您可能还需要获取forName()
的完整包名称才能正常工作:.getClass().getPackage().getName()