我目前正在尝试使用Mono在Android下开发应用程序。 我想在我的应用程序中添加对插件的支持,以便为其提供额外的功能。
我能够在我的程序中在运行时加载简单的.dll,但每当我尝试创建一个实现我的接口和自定义活动的dll时,抛出类型为Java.Lang.NoClassDefFoundError的异常。
dll代码中有类:
[Activity (Label = "Vestiaire")]
public class Vestiaire : Activity, IModule
{
public string Name { get; set; }
public string Version { get; set; }
void OnClickVestiaireButton(object sender, System.EventArgs e)
{
;
}
public void InitVestiaireModule()
{
Run();
}
public Type LaunchActivity ()
{
return typeof(Vestiaire);
}
public void Init()
{
Name = "Vestiaire Module";
Version = "0.1";
}
public void Run()
{
}
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
}
}
负责异常的行:(来自程序核心)
LoadedPlugin.Add((IModule)(Activator.CreateInstance(Plugin)));
我真正想知道的是: - 有可能真正实现我想要的吗? 如果是,那么就会对这个问题提供帮助:P
否则什么是最好的选择? 全局要点是能够在从dll加载的运行时加载自定义菜单。
感谢。
答案 0 :(得分:1)
我认为您的问题的关键是需要在您的Manifest.xml文件中注册Activity。
对于主应用程序中的活动,MonoDroid会为您执行此操作 - 但我认为这不适用于您的插件。
你可以尝试的事情是:
自己将Activity放入Manifest(MonoDroid似乎非常有能力合并这些文件)
如果这不起作用,那么您可以尝试使用Fragment - 并将Fragment加载到主应用程序中的自定义FragmentActivity中。