2016-04-24 8 views
17

एंड्रॉइड के लिए विभिन्न कोटलिन उदाहरणों में मैं टोस्ट ("कुछ संदेश ...") या टोस्ट लोंग ("कुछ लंबा संदेश") देखता हूं। उदाहरण के लिए:कोटलिन। टोस्ट

view.setOnClickListener { toast("Click") } 

जैसा कि मैं समझता हूं कि यह गतिविधि के लिए एक एक्सटेंशन फ़ंक्शन है।

इस टोस्ट() फ़ंक्शन को परिभाषित करने के लिए और जहां (किस स्थान पर) परियोजना के माध्यम से इसका उपयोग करने में सक्षम हो?

उत्तर

29

यह Context के लिए एक विस्तार समारोह हो सकता है:

fun Context.toast(message: CharSequence) = 
    Toast.makeText(this, message, Toast.LENGTH_SHORT).show() 

आप अपने प्रोजेक्ट है, जहां वास्तव में आप पर निर्भर है में इस कहीं भी रख सकते हैं। उदाहरण के लिए, आप एक फ़ाइल mypackage.util.ContextExtensions.kt परिभाषित कर सकते हैं और इसे शीर्ष स्तर के फ़ंक्शन के रूप में रख सकते हैं।

जब भी आप एक Context उदाहरण के लिए उपयोग किया, तो आप इस समारोह आयात और इसका इस्तेमाल कर सकते हैं:

import mypackage.util.ContextExtensions.toast 

fun myFun(context: Context) { 
    context.toast("Hello world!") 
} 
1

यह बस Context के लिए एक विस्तार समारोह (अन्य की तरह पहले ही बताया) है।

आप Anko में बहुत से पूर्व-परिभाषित एंड्रॉइड एक्सटेंशन फ़ंक्शंस पा सकते हैं, जो शायद ट्यूटोरियल का भी उपयोग करता है।

17

यह वास्तव में Anko का एक हिस्सा है, जो कोटलिन के लिए एक विस्तार है। सिंटेक्स इस प्रकार है:

toast("Hi there!") 
toast(R.string.message) 
longToast("Wow, such a duration") 

अपने एप्लिकेशन-स्तरीय build.gradle में, जोड़ने compile "org.jetbrains.anko:anko-common:0.8.3"

अपनी गतिविधि को import org.jetbrains.anko.toast जोड़ें।

1

बस @ nhaarman के जवाब पर जोड़ने के लिए -> आप शायद के रूप में अच्छी

fun Context.toast(resourceId: Int) = toast(getString(resourceId)) 
fun Context.toast(message: CharSequence) = 
    Toast.makeText(this, message, Toast.LENGTH_SHORT).show() 
2

मैं दिए गए लिंक https://gist.github.com/felipearimateia/ee651e2694c21de2c812063980b89ca3 से टोस्ट करने के लिए बहुत ही आसान तरीके पाया है resourceId समर्थन जोड़ना चाहते हैं। इस लिंक में संदर्भ के बजाय गतिविधि का उपयोग किया जाता है। कोशिश करो। Anko का उपयोग कर

Toast.makeText([email protected], "Its toast!", Toast.LENGTH_SHORT).show(); 
3

बटन क्लिक या किसी नेस्टेड विधि के लिए, यह करने के

  • activity.toast (" स्ट्रिंग संदेश ") या
  • context.toast (" स्ट्रिंग संदेश ")
0

जबकि साथ Kotlin, टुकड़ा अंदर उपयोग या तो: