サーチ…


タイプの削除

Xamarin.Android Bindings GeneratorにJavaタイプを無視し、バインドしないように指示することは可能です。これは、 remove-node XML要素をmetadata.xmlファイルに追加することによって行われます。

<remove-node path="/api/package[@name='{package_name}']/class[@name='{name}']" />

Javaインタフェースの実装

Javaライブラリに、ユーザーが実装する必要のあるインタフェース( View.IOnClickListenerやコールバックなどのクリックリスナーなど)が含まれている場合、実装クラスはJava.Lang.ObjectまたはJava.Lang.Throwableから直接的または間接的に継承する必要があります。これは一般的なエラーです。なぜなら、パッケージングの手順で簡単に見落とされる警告が出力されるからです。

タイプ 'MyListener'はAndroid.Runtime.IJavaObjectを実装しますが、Java.Lang.Objectから継承しません。サポートされていません。

違う

この実装を使用すると予期しない動作が発生します。

class MyListener : View.IOnClickListener
{
    public IntPtr Handle { get; }

    public void Dispose()
    {            
    }

    
    public void OnClick(View v)
    {
        // ...
    }
}

正しい

class MyListener : 
    Java.Lang.Object, // this is the important part
    View.IOnClickListener
{       
    public void OnClick(View v)
    {
        // ...
    }
}

バインディングライブラリはメソッドとインタフェースの名前を変更することがあります

バインディングライブラリのすべてがC#でJavaと同じ名前を持つわけではありません。

C#では、インタフェース名は「I」で始まりますが、Javaではそのような規則はありません。 Javaライブラリをインポートすると、 ISomeInterfaceという名前のインターフェイスがSomeInterfaceになりISomeInterface

同様に、JavaにはC#のようなプロパティはありません。ライブラリがバインドされると、Javaのgetterメソッドとsetterメソッドがプロパティとしてリファクタリングされることがあります。たとえば、次のJavaコード

public int getX() { return someInt; }

public int setX(int someInt) { this.someInt = someInt; }

リファクタリングすることができます

public int X { get; set; }

それが結ばれているとき。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow