2011-12-20 4 views
26

현재 GPS 업데이트를 받기 위해 클래스에 ILocationListener를 구현하려고합니다. 이것은 Activity가 아닌 일반적인 C# 클래스입니다.MonoDroid에서 IJavaObject 구현하기

내가를 지원하는 데 필요한 ILocationListener 계약의 일환으로 JAVAOBJECT :이 무엇을해야

public IntPtr Handle 
    { 
     get { throw new NotImplementedException(); } 
    } 

?

또한 C# 클래스와 Java 객체가 MonoDroid에서 함께 묶이는 방법에 대해 이야기하는 좋은 문서 및 블로그 게시물이 있습니까? 해당 문서를 찾을 수 있으면 질문하지 않아도됩니다. 이렇게하면 더 나은 코드를 작성할 수 있기를 바랍니다. 거기 java.lang.Object 상위 편리하고 나는 그것을 사용할 수있는 것처럼 보인다 -

덕분에

답변

54

Xamarin's docs에서 촬영 뭘하는지 알 수 :

당신이해야 할 수도 있습니다 경우가 있습니다

Android.Content.IComponentCallbacks와 같은 Android 인터페이스를 구현하십시오. 모든 안드로이드 클래스와 인터페이스가 Android.Runtime.IJavaObject 인터페이스를 확장하기 때문에 문제가 발생합니다 : 어떻게 IJavaObject를 구현합니까?

위의 질문에 대한 답변을 얻었습니다. 모든 Android 유형에서 IJavaObject를 구현해야하는 이유는 MonoDroid가 안드로이드에 제공 할 Android 호출 가능 래퍼 (즉, 주어진 유형의 Java 프록시)를 제공하기위한 것입니다. monodroid.exe는 java.lang.Object 상위의 서브 클래스를 검색하고, java.lang.Object 상위 IJavaObject를 구현하기 때문에, 대답은 분명하다 :

는 기본적으로 항상 java.lang의 상속해야 java.lang.Object 상위 서브 클래스입니다. 이런 경우에는 IJavaObject를 직접 구현하면 안드로이드 용 Mono가 호출 가능한 래퍼를 생성하지 않으므로 실제로 작동하지 않습니다.

도움이된다면, 사용할 수있는 ILocationListener를 구현하는 예제가 있습니다. here. 액티비티에 직접 구현되지만 액티비티 대신 Java.Lang.Object에서 상속받을 수 있습니다.

+2

아직 이해하지 못했던 사람들을 위해 : "public class locationManager : Java.Lang.Object, ILocationListener" –

2

나는 퍼즐 자신의 첫 번째 조각을 발견했습니다 생각합니다.

내가 바인딩 정보를 찾기 위해 계속합니다 - 희망 그때 내가 :)

0

또한 내 Seg 오류를 해결했습니다. [mono-rt] 원시 코드를 실행하는 동안 SIGSEGV가 발생했습니다. IJavaObject를 구현 한 클래스로 인해 발생한 문제!

관련 문제