0

我有这个关于 Android 活动和 AndroidManifest.xml 的问题。当我使用 Java servlet 并想创建一个“基于模块”或类似于基于插件的服务器时出现了这个问题。这工作正常,我可以使用类似于以下的代码方法动态加载我想要的 servlet:Dynamicly add a servlet to the servletConfig。servlet 在服务器启动期间被动态发现和映射。

这里的问题不是如何找到合适的活动,或者如何创建它们的新实例,或者如何启动它们,我已经弄清楚了那部分。我可以遍历我的包并找到适当的活动类,创建它们的新实例并将它们添加到列表中。

我一直在使用interface所有活动都必须实现的,才能成为有效的活动。这样,我可以为我的应用程序创建新的部分、扩展或新功能,并且一切正常。在我的应用程序中,我有一个用户可以单击的按钮列表,并且按钮列表是通过使用ListView.

private void displayLoadedContent() {
    View v = inflateLayout(R.layout.buttonlayout);
    ListView view = (ListView) v.findViewById(R.id.list);
    view.setAdapter(new ListButtonAdapter(this, content));
}

wherecontent被声明为

List<MyActivityInterface> content;

ListButtonAdapter扩展BaseAdapter

所以那里没有问题。问题是我必须在 AndroidManifest.xml 中声明我的每一个活动。该文件就像要显示的可能活动的大列表,而且有点混乱,所以我不打算在这里显示代码。

我意识到我必须在清单中添加一项活动,但我希望一项活动就足够了。我的方法在很多方面都可以看作是前端控制器模式,其中每个活动都负责加载和显示他们需要的活动。

我只是问是否可以在清单中动态注册活动(或允许它们以另一种方式运行),如果没有,是否有其他有效的解决方案?

4

1 回答 1

1

Android 要求AndroidManifest.xml提前在您的文件中注册每个活动。部署后,您的应用程序将作为 .apk 文件存在于设备上,该文件无法修改(除了被更新/替换为新的 APK)。

如果我正确理解了这个问题,您根本不想在清单文件中列出大量活动吗?片段不需要在清单文件中注册,因此如果您的目标是动态换出 UI 组件,那就是答案。片段可通过支持库回到 1.6 。

于 2012-10-02T16:47:20.130 回答