2011-12-20 8 views
26

पर IJavaObject को कार्यान्वित करना मैं वर्तमान में जीपीएस अपडेट प्राप्त करने के लिए कक्षा में एक आईलोशन लिस्टनर को कार्यान्वित करने की कोशिश कर रहा हूं - यह एक गतिविधि पर नहीं है, केवल एक सामान्य सी # कक्षा है।MonoDroid

ILocationListener अनुबंध मुझे लगता है मैं समर्थन करने की आवश्यकता के हिस्से के रूप JavaObject:

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

मैं इस के लिए क्या करना चाहिए?

इसके अलावा, वहाँ कोई अच्छा दस्तावेज और/या ब्लॉग पोस्ट हैं जो इस बारे में बात करते हैं कि कैसे सी # कक्षाएं और जावा ऑब्जेक्ट्स मोनोड्रॉइड में एक साथ बंधे हैं - अगर मैं उन दस्तावेजों को पा सकता हूं, तो मुझे शायद प्रश्न पूछने की आवश्यकता नहीं होगी इस तरह और मैं आशा करता हूं कि मैं भी बेहतर कोड लिख रहा हूं।

धन्यवाद

उत्तर

54

Xamarin's docs से लिया:

वहाँ बार जब आप की आवश्यकता हो सकती हैं Android.Content.IComponentCallbacks जैसे एंड्रॉइड इंटरफ़ेस को कार्यान्वित करें। चूंकि सभी एंड्रॉइड क्लासेस और इंटरफेस एंड्रॉइड का विस्तार करते हैं। रनटाइम। इजावा ऑब्जेक्ट इंटरफ़ेस, सवाल उठता है: हम IJavaObject को कैसे कार्यान्वित करते हैं?

प्रश्न का उत्तर दिया गया था: कारण सभी एंड्रॉइड प्रकारों को लागू करने की आवश्यकता है IJavaObject है ताकि मोनोडायोड में एंड्रॉइड को प्रदान करने के लिए एक एंड्रॉइड कॉल करने योग्य रैपर हो, यानी दिए गए प्रकार के लिए जावा प्रॉक्सी। चूंकि monodroid.exe केवल Java.Lang.Object उपवर्गों को तलाशता है और Java.Lang.Object IJavaObject लागू करता है, इस सवाल का जवाब स्पष्ट है: उपवर्ग Java.Lang.Object

मूल रूप से आप हमेशा java.lang से विरासत चाहिए। इन मामलों में ऑब्जेक्ट, IJavaObject को लागू करने के रूप में स्वयं वास्तव में काम नहीं करेगा क्योंकि एंड्रॉइड के लिए मोनो कॉल करने योग्य रैपर उत्पन्न नहीं करेगा।

यदि यह मदद करता है, तो मेरे पास इलोकेशन लिस्टर उपलब्ध here लागू करने का एक उदाहरण है। यह सीधे किसी गतिविधि पर लागू होता है, लेकिन आप गतिविधि के बजाए Java.Lang.Object से प्राप्त कर सकते हैं।

+2

उन लोगों के लिए जो अभी भी समझ में नहीं आये हैं, उनका मतलब है: "सार्वजनिक वर्ग स्थान प्रबंधक: जावा.लांग.ऑब्जेक्ट, आईएलोकेशन लिस्टर" –

2

मुझे लगता है कि मैं अपने आप को पहेली के पहले टुकड़ा मिल गया है - ऐसा लगता है एक Java.Lang.Object आसान नहीं है और मुझे लगता है कि उपयोग कर सकते हैं की तरह।

मैं बाध्यकारी जानकारी के लिए जांच को आगे बढ़ाएंगे - उम्मीद है कि मैं तो पता चल जाएगा कि मैं क्या कर रहा हूँ :)

0

यह भी मेरे सेग फाल्ट दुर्घटना [मोनो-आरटी] को हल किया गया है जबकि देशी कोड निष्पादित करते समय एक सिगसेगवी मिला ..... समस्याएं जो कि क्लास द्वारा लागू की गई थीं IJavaObject लागू!

संबंधित मुद्दे