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 がこれを行いますが、プラグインでは機能しないと思います。

あなたが試すことができることは次のとおりです。

  • 自分でアクティビティをマニフェストに入れます(MonoDroidはこれらのファイルをマージする能力が非常に高いようです)

  • それがうまくいかない場合は、代わりに Fragment を使用してみてください。Fragment をメイン アプリのカスタム FragmentActivity にロードします。

于 2013-01-28T22:34:55.707 に答える