Monodroid - 加载自定义活动

时间:2013-01-28 01:06:41

标签: android android-activity xamarin.android

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

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

你可以尝试的事情是:

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

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