0

我目前正在尝试使用 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 加载自定义菜单。

谢谢。

4

1 回答 1

1

我认为您的问题的关键是 Activity 需要在您的 Manifest.xml 文件中注册。

对于您主应用程序中的活动,MonoDroid 会为您执行此操作 - 但我认为这不适用于您的插件。

你可以尝试的事情是:

  • 自己将 Activity 放入清单中(MonoDroid 似乎非常有能力合并这些文件)

  • 如果这不起作用,那么您可以尝试使用 Fragment - 并将 Fragment 加载到主应用程序中的自定义 FragmentActivity 中。

于 2013-01-28T22:34:55.707 回答