android EditText Kotlin में टेक्स्ट सेट करना




android-edittext (8)

यहां कई कार्य उत्तर हैं, लेकिन यदि आप अभी भी संपत्ति प्रारूप का उपयोग करना चाहते हैं और आपका कोड साफ है, तो आप एक एक्सटेंशन लिख सकते हैं:

fun String.toEditable(): Editable =  Editable.Factory.getInstance().newEditable(this)

फिर आप इसे इस तरह से उपयोग कर सकते हैं:

mEditText.text = myString.toEditable()

मैं एक edittext में पाठ सेट करने की कोशिश कर रहा हूँ, लेकिन यह कहता है कि टाइप बेमेल आवश्यक संपादन योग्य पाया स्ट्रिंग मेरा कोड इस प्रकार है

String name = "Paramjeet"
val nametxt = findViewById (R.id.nametxt) as EditText
nametxt.text = name

सेटटैक्स का उपयोग करने के लिए मत कहो क्योंकि मैं कोटलिन का उपयोग कर रहा हूं जावा नहीं


या आप एक्सटेंशन प्रॉब्लम का उपयोग कर सकते हैं:

var EditText.value
    get() = this.text.toString()
    set(value) {
            this.setText(value)
    }

और .value के बजाय .value = का उपयोग करें


setText(String) उपयोग करें, क्योंकि editText.text एक Editable अपेक्षा करता है, String नहीं।


Nametxt.post: nametxt.post ({nametxt.setText ("आपका पाठ")} का उपयोग करके देखें


editText.setText("Your text here")

EditText.text रूप में setText(String) उपयोग करें, पहले स्थान पर एक editable EditText.text चाहिए स्ट्रिंग नहीं

क्यूं कर ?

इस लिंक के तहत माइकल द्वारा दी गई अच्छी व्याख्या । अधिक विस्तार के लिए इस लिंक पर जाएं

जावा गेट्टर / सेटर जोड़ी के लिए सिंथेटिक प्रॉपर्टी बनाते समय कोटलिन पहले एक गेट्टर की तलाश करता है। गेट्टर एक प्रकार का गेट्टर के साथ सिंथेटिक संपत्ति बनाने के लिए पर्याप्त है। दूसरी ओर, संपत्ति नहीं बनाई जाएगी यदि केवल एक सेटर प्रस्तुत करता है।

जब एक सेटर खेल में आता है तो संपत्ति का निर्माण और मुश्किल हो जाता है। इसका कारण यह है कि गेट्टर और सेटर का अलग-अलग प्रकार हो सकता है। इसके अलावा, गेटक और / या सेटर को एक उपवर्ग में ओवरराइड किया जा सकता है।


कोटर्स और गुणों के लिए जावा सम्मेलनों का पालन करने वाली विधियाँ (नाम के साथ शुरू होने वाले नाम के बिना कोई तर्क-पद्धति और सेट के साथ शुरू होने वाले नामों के साथ एकल-तर्क विधियाँ) कोटलीन में गुणों के रूप में प्रदर्शित की जाती हैं। लेकिन, पहले एक गेट्टर के लिए जावा गेट्टर / सेटर जोड़ी कोटलिन के लिए एक संपत्ति बनाते समय, एक लग रहा है। गेट्टर प्रकार से प्रापर्टी के प्रकार का पता लगाने के लिए पर्याप्त है। दूसरी ओर, संपत्ति नहीं बनाई जाएगी यदि केवल एक सेटर मौजूद है (क्योंकि कोटलिन इस समय सेट-केवल गुणों का समर्थन नहीं करता है)।

जब एक सेटर खेल में आता है, तो संपत्ति निर्माण प्रक्रिया थोड़ी अस्पष्ट हो जाती है। इसका कारण यह है कि गेट्टर और सेटर का अलग-अलग प्रकार हो सकता है। इसके अलावा, गेटक और / या सेटर को एक उपवर्ग में ओवरराइड किया जा सकता है, जो वास्तव में Android में EditText का मामला है।

उपरोक्त मामले में Android TextView वर्ग में एक गेटटर होता है

CharSequence getText() 

और एक सेटर शून्य

setText(CharSequence)

यदि मेरे पास TextView प्रकार का एक चर होता तो मेरा कोड ठीक काम करता। लेकिन मैंने EditText क्लास का इस्तेमाल किया, जिसमें ओवरराइड गेट्टर होता है

Editable getText()

जिसका अर्थ है कि आप एक EditText के लिए एक संपादन योग्य प्राप्त कर सकते हैं और एक Editable को एक EditText पर सेट कर सकते हैं। इसलिए, कोटलिन यथोचित प्रकार का एक कृत्रिम संपत्ति पाठ बनाता है। जैसा कि String class Editable नहीं है, इसीलिए मैं EditText क्लास की टेक्स्ट प्रॉपर्टी को एक स्ट्रिंग उदाहरण नहीं दे सकता।

यह लगता है कि जेटब्रेन की तरह जावा गेट्टर और सेटर विधियों के लिए कोटलिन गुण उत्पन्न करते समय, गेट्टर विधियों की प्रमुख भूमिका को निर्दिष्ट करना भूल गया। वैसे भी, मैंने जेट ब्रेन कोटलिन वेबसाइट पर जीथब के माध्यम से पुल अनुरोध प्रस्तुत किया है।

मुझे इस मध्यम पोस्ट में उपरोक्त समस्या का विस्तार से पता चला है कि कैसे कोटलिन जावा गेटर्स और सेटर्स से संपत्ति उत्पन्न करता है (अनब्रेकेबल बीब्रांड द्वारा)


यदि आप सिद्धांत से .text का उपयोग करना चाहते हैं, तो उपयोग करें:

nametxt.text = Editable.Factory.getInstance().newEditable(name)




android-edittext