수색…


유형 제거

Xamarin.Android Bindings Generator가 Java 유형을 무시하고 바인드하지 않도록 지시 할 수 있습니다. 이는 metadata.xml 파일에 remove-node XML 요소를 추가하여 수행됩니다.

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

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 라이브러리를 가져 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