Xamarin.Android
바인딩
수색…
유형 제거
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; }
그것이 묶여있을 때.