Android 返回活动堆栈中的第一个活动,而不显式调用它

Android 返回活动堆栈中的第一个活动,而不显式调用它,android,android-activity,activity-stack,Android,Android Activity,Activity Stack,我正在开发一个由两个库项目组成的应用程序。两个库项目都由实际应用程序使用 第一个库项目可以被看作是主库项目,因为它包含整个应用程序的主菜单(以仪表板的形式)。从仪表板中的一个条目,用户可以启动作为第二个库项目一部分的活动 所有活动以及从此活动开始的任何后续活动也是第二个库项目的一部分。因此,第二个库项目对第一个库项目一无所知 在操作流结束时,用户应通过单击单个按钮返回仪表板活动。因此,我需要清除整个活动堆栈,不包括第一个活动(仪表板)。通常情况下,我会使用标志“活动”\u CLEAR\u TOP

我正在开发一个由两个库项目组成的应用程序。两个库项目都由实际应用程序使用

第一个库项目可以被看作是主库项目,因为它包含整个应用程序的主菜单(以仪表板的形式)。从仪表板中的一个条目,用户可以启动作为第二个库项目一部分的活动

所有活动以及从此活动开始的任何后续活动也是第二个库项目的一部分。因此,第二个库项目对第一个库项目一无所知

在操作流结束时,用户应通过单击单个按钮返回仪表板活动。因此,我需要清除整个活动堆栈,不包括第一个活动(仪表板)。通常情况下,我会使用标志“活动”\u CLEAR\u TOP启动仪表板活动。此外,使用FLAG_ACTIVITY_NO_历史记录也不是一个选项,因为我需要历史记录

但是,正如我前面提到的,第二个库项目的任何组件都不应该不了解主库项目。因此,使用该标志调用仪表板活动不是解决方案


因此,我正在寻找一种方法来完成第二个库项目的所有活动,而不是主库项目中的仪表板活动。

当仪表板调用第二个活动时,将类名(作为字符串)捆绑在一个意图中。在第二个活动中,可以使用该类名创建返回的意图

使用
MyActivity.getClass().getName()
形成字符串

使用
Class.forName(className)
获取类


编辑:您可能还需要获取
forName()
的完整包名才能工作:
.getClass().getPackage().getName()

我知道您说过“不显式调用”,但如果您的目的不是创建仪表板的多个实例。。。创建仪表板
singleInstance
,并显式调用它。这样,它就不会被再次创建,并将被带到顶部。你也有你的历史。不,这不是真正的问题,因此没有解决办法。真正的问题是,我想在另一个应用程序中使用第二个库项目,因此我不能引用它之外的任何内容。这就是为什么我不能显式调用Dashboard活动的原因。但是,与其将类名以字符串形式额外传递给第二个库项目,为什么不将
Intent
从仪表板传递给第二个库项目呢。然后,第二个库项目可以使用此意图返回到仪表板。在这种情况下,除了正确设置包和类名之外,仪表板还可以指定它想要的任何标志(例如:CLEAR_TOP)。啊,这会更清楚,不是吗?我忘了你可以在意图中捆绑意图。