2015-03-17 12 views
5

नहीं मिला है, मैं xamarin.forms से कस्टम दृश्य प्रस्तुत करने की कोशिश कर रहा हूं। जब मैं इसे निम्नलिखित कोडडिफ़ॉल्ट कन्स्ट्रक्टर टाइप 'माई क्लास'

[असेंबली: निर्यात रेंडरर (टाइपफ़ोफ़ (स्वाइप करने योग्य कार्ड), टाइपफ़ोफ़ (कार्डकॉन्टेनर)) से प्रस्तुत करने का प्रयास करता हूं।

लेकिन एक त्रुटि

डिफ़ॉल्ट निर्माता प्रकार का नहीं मिला 'Com.andtinde.CardContainer' की तरह फेंकता है।

मुझे लगता है कि ऐसा इसलिए है क्योंकि कार्ड कंटेनर में डिफ़ॉल्ट कन्स्ट्रक्टर नहीं है। और मैं एक प्रदान नहीं कर सकता क्योंकि यह एडाप्टरव्यू से विरासत में मिलता है।

मैं क्या गलत कर रहा हूं। कोई भी मदद की सराहना की जायेंगीं।

उत्तर

2

आप पहले ही पहचान चुके हैं कि आप क्या कर रहे हैं। ExportRenderer को एक डिफ़ॉल्ट कन्स्ट्रक्टर की आवश्यकता है जो यह करने में सक्षम हो। एडाप्टर व्यू से विरासत में क्यों आपको डिफ़ॉल्ट कन्स्ट्रक्टर होने से रोकता है?

public class CardContainer 
{ 
    public CardContainer() // This is a default constructor 
     : base(...) // If base class requires arguments, pass them here 
    { 
    } 
} 
+0

@Steve मुझे कोशिश है कि एक बार –

2

आप शायद ViewRenderer से इनहेरिट और CardContainer देशी दृश्य प्रकार के रूप में उपलब्ध कराने के द्वारा बेहतर कर रहे हैं:

आप की तरह कुछ करने के लिए सक्षम होना चाहिए। फिर ViewRenderer की OnElementChanged विधि को ओवरराइड करें और रेंडरर के लिए एक नया कार्डकंटनर बनाएं। नीचे एक छोटा संस्करण है जो आपको शुरू कर देगा।

पंजीकरण:

[assembly: ExportRenderer(typeof(SwipeableCard), typeof(SwipeableCardRenderer))] 

कक्षा परिभाषा:

SwipeableCardRenderer : ViewRenderer<SwipeableCard, CardContainer> 

OnElementChanged ओवरराइड:

if (this.Control == null) 
{ 
    this.SetNativeControl(new CardContainer(this.Context)); 
} 
20

मुझे लगता है कि इस Xamarin में एक ज्ञात बग है। हालांकि मुझे निर्भरता सेवा के साथ एक ही समस्या थी। मैंने इसे आईओएस बिल्ड विकल्पों के लिंकर व्यवहार में "केवल लिंक फ्रेमवर्क एसडीके" सेट करके हल किया।

+1

धन्यवाद धन्यवाद आप बहुत कुछ! – Chris

+2

इसे सही उत्तर के रूप में चिह्नित किया जाना चाहिए। –

0

यह ज़ैमरिन पर एक बग नहीं है, आपको अपने लिंक किए गए असेंबली को प्रबंधित करने के तरीके के बारे में पता होना चाहिए। Xamarin में रनटाइम कार्यों में से अधिकांश को इस तरह की त्रुटि मिल जाएगी उदाहरण के लिए आप रनटाइम में कक्षा की peroperty नहीं प्राप्त कर सकते हैं या रनटाइम में उदाहरण बना सकते हैं वह असेंबली जुड़ा हुआ नहीं है। आप लिंक किए गए असेंबली मैनुअल प्रबंधित कर सकते हैं या Alessio Campanelli उत्तर here के रूप में अपने एप्लिकेशन विकल्प में सेट कर सकते हैं, यदि आप इसे मैन्युअल रूप से सेट नहीं करते हैं तो आपके एप्लिकेशन को एपीके फ़ाइल जैसे रिलीज पैकेज में बड़ा आकार मिलेगा। इसे मैन्युअल कैसे सेट करें?

  1. अपने Android आवेदन नाम यह "linked.xml"
  2. राइट क्लिक में एक xml फ़ाइल बनाएँ और "लिंक किए गए peroperties में जाते हैं।xml "और सेट" कार्रवाई का निर्माण अपने विधानसभाओं उन इस तरह क्रम पर उपयोग किया जाता है जोड़ने LinkDescription "
  3. " से ":
<?xml version="1.0" encoding="utf-8" ?> 
    <linker> 
     <assembly fullname="Newtonsoft.Json"> 
     <type fullname="*" /> 
     </assembly> 
    </linker> 

Linker in xamarin

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