【发布时间】:2012-09-13 19:52:55
【问题描述】:
好的,
所以我正在制作一个 UI 元素库项目。该库有一些基于 ActionBarSherlock 的活动,ActionBarSherlock 是 android 中操作栏的向后兼容库。在这些活动中,我希望在操作栏中有一个按钮,无论他们在图书馆项目中使用哪个活动,它都会将用户带回家。
一些术语。 “库”指的是我正在处理的 Android UI 库项目。 “应用程序”是指开发人员可能使用包含的库的任何客户。
通常,当您进行一项活动并想调用另一个活动时,您会这样做。
intent = new Intent(this, WhateverMyActivityName.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
足够简单。但这是棘手的一点。 Android 库几乎不知道什么应用程序正在使用它们。所以 'WhateverMyActivityName.class' 是无用的,因为无法预测开发人员应用程序将调用他们的活动。
我需要更换
intent = new Intent(this, WhateverMyActivityName.class);
类似这样的东西
intent = new Intent(this, getApplication().MainActivity().getClass());
或者可能使用某种意图操作来调用应用程序中的主 Activity (Intent.ACTION_MAIN or Intent.CATEGORY_LAUNCHER)
简而言之:如何从库项目中获取应用程序主要活动?
【问题讨论】:
-
刚刚在 Intent 文档 ACTION_MAIN 中找到了这个,类别为 CATEGORY_HOME -- 启动主屏幕。
-
这是一件很奇怪的事情。通常我们创建库项目,以便我们可以将它们重用于许多应用程序。应用程序独立代码去那里..从库项目调用特定的应用程序活动限制它的用法..
-
@Krishnabhadra 这是一个不寻常的用例,但图书馆设计有一个主页按钮,我想不出任何办法来阻止图书馆向应用程序流血。也许我应该将它配置为 XML 资源,以便开发人员可以指定他们想要调用的活动?
标签: android android-intent android-activity android-library library-project