मैं https://github.com/nekocode/ से Android Parcelable प्लगइन का उपयोग कर रहा हूं android-parcelable-intellij-plugin-kotlin

मैंने इसे इस परिभाषा के साथ कक्षा में आजमाया

class ChessClock : TextView  {
    lateinit var player:String
    constructor(context: Context) : super(context)
    constructor(context:Context, p:String, angle:Float) : this(context) {
       player = p
       rotation = angle
   }
   <snip>
}

और परिभाषा को बदल दिया गया था

class ChessClock() : TextView, Parcelable {
   lateinit var player:String 
   constructor(context: Context) : super(context)
   constructor(context:Context, p:String, angle:Float) : this(context){
       player = p
       rotation = angle
   }
   <snip -- various stuff added here>
}

दो वाक्यविन्यास त्रुटियों को हाइलाइट किया गया था।

कतार में

class ChessClock() : TextView, Parcelable

TextView को रेखांकित किया गया है, टिप्पणी के साथ "इस प्रकार का एक कंस्ट्रक्टर है, और इसे यहां प्रारंभ किया जाना चाहिए।"

कतार में

constructor(context: Context) : super(context)

super को "प्राथमिक कंस्ट्रक्टर कॉल अपेक्षित" टिप्पणी के साथ रेखांकित किया गया है।

मैं केवल कुछ हफ्तों के लिए कोटलिन का उपयोग कर रहा हूं, और मुझे समझ नहीं आ रहा है कि यहां क्या हो रहा है। सबसे पहले, मुझे पता है (या कम से कम मुझे लगता है कि मुझे पता है) कि कोटलिन एकाधिक विरासत को लागू नहीं करता है, इसलिए मुझे समझ में नहीं आता कि क्या

क्लास चेसक्लॉक (): टेक्स्ट व्यू, पार्सलेबल

साधन। क्या यह वास्तव में वैध कोटलिन है? कोटलिन में व्युत्पन्न वर्ग को पार्सल करने योग्य कैसे बनाया जा सकता है?

0
saulspatz 8 अगस्त 2017, 22:43

2 जवाब

सबसे बढ़िया उत्तर
  1. टेक्स्ट व्यू एक क्लास है और इसलिए आपके प्राइमरी कंस्ट्रक्टर को इसके किसी कंस्ट्रक्टर को इनवाइट करना चाहिए
  2. आपको अपने प्राथमिक कंस्ट्रक्टर को अन्य कंस्ट्रक्टरों से आमंत्रित करना चाहिए

उदाहरण:

class ChessClock(context: Context) : TextView(context), Parcelable

//in this case you don't need other constructors but in-case you do, this is how you should write it:
constructor(context: Context, dummy: Int): this(context)
2
bennyl 8 अगस्त 2017, 23:02

आप जेनरेट कोड को ChessClock() से ChessClock में भी बदल सकते हैं।

0
Les 9 अगस्त 2017, 04:23