অ্যান্ড্রয়েড - কীভাবে কোটলিনে সেটঅনক্লিকলিস্টনার অর্জন করবেন?


113

আমি জানতে চেয়েছিলাম যে কীভাবে আমরা অ্যান্ড্রয়েড বিকাশের জন্য কোটলিনে বেসিক অন ক্লিকলিস্টনার সেট করি।


6
এই প্রশ্নটিতে কীভাবে ৪৩ টি ভোট থাকতে পারে?
হুগো অ্যালেক্সিস কার্ডোনা

5
এটি সম্ভবত জনপ্রিয় কারণ অ্যান্ড্রয়েড স্টুডিও জাভাতে রূপান্তর করে button.setOnClickListener(object : View.OnClickListener { override fun onClick(v: View) { /*do work*/} })এবং তারপরে তাদের উত্পন্ন কোডের জন্য একটি পরামর্শ প্রদান করে যা আমাদের এটি ল্যাম্বডায় রূপান্তর করা উচিত।
জো ল্যাপ

6
কোটলিন হ'ল অভিহিত। গুগল কেন এটিতে এত বেশি বিনিয়োগ করছে
কোডজম্বি

4
সবাই কেন সামান্য পার্থক্য নিয়ে একই উত্তর পোস্ট করছে? উত্তরটি সহজ view.setOnClickListener { ... }। দেখে মনে হচ্ছে সবাই খ্যাতি অর্জন করতে আগ্রহী।
আজিজ

উত্তর:


72

ধরুন আপনার ক্লিক করতে টেক্সটভিউ রয়েছে

text_view.text = "Hello Kotlin";

text_view.setOnClickListener {
    val intent = Intent(this@MainActivity, SecondActivity::class.java)
    intent.putExtra("key", "Kotlin")
    startActivity(intent)
}

4
ও আচ্ছা! টাইপ অনুমান সমস্ত অগোছালো বিট যত্ন নেবে। ধন্যবাদ!
জো ল্যাপ 20

49

কোড নীচে ব্যবহার করুন

val textview = findViewById<TextView>(R.id.textview)
textview.setOnClickListener(clickListener)

val button = findViewById<Button>(R.id.button)
button.setOnClickListener(clickListener)

লিস্টনার কোডটি ক্লিক করুন।

val clickListener = View.OnClickListener {view ->

    when (view.getId()) {
        R.id.textview -> firstFun()
        R.id.button -> secondFun()
    }
}

29

কোটলিনে অন ক্লিকলিস্টনার কীভাবে ব্যবহার করতে হয় তার একটি উদাহরণ এখানে

button1.setOnClickListener(object : View.OnClickListener{
            override fun onClick(v: View?) {
                //Your code here
            }})

সব কিছু কাছে দেখায়, "অবজেক্ট" কোঁকড়ানো বন্ধনীগুলিতে নেই, স্পষ্টতই। আমি আমার কিছু সময় নষ্ট করেছি
এম উসমান খান

27

সেটঅনক্লিকলিস্টনার ব্যবহারের পাঁচটি উপায় রয়েছে:

প্রথম:

button.setOnClickListener {
    // Do some work here
}

দ্বিতীয়:

button.setOnClickListener(object : View.OnClickListener {
    override fun onClick(view: View?) {
        // Do some work here
    }

})

তৃতীয়:

button.setOnClickListener(View.OnClickListener { view ->
    // Do some work here
})

চতুর্থ:

class MainActivity : AppCompatActivity(), View.OnClickListener{

    lateinit var button : Button

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        button = findViewById(R.id.button1)
        button.setOnClickListener(this)
    }

    override fun onClick(view: View?) {
        when(view?.id){
            R.id.button1->{
                // do some work here
            }
        }
    }
}

পঞ্চম:

class MainActivity : AppCompatActivity(){

    lateinit var button : Button

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        button = findViewById(R.id.button1)
        button.setOnClickListener(listener)
    }

    val listener= View.OnClickListener { view ->
        when (view.getId()) {
            R.id.button1 -> {
                // Do some work here
            }
        }
    }
}

চিয়ার্স!


27

পদ্ধতি 1:

txtNext.setOnClickListener {
        //Code statements
    }

পদ্ধতি 2:

class FirstActivity : AppCompatActivity(), View.OnClickListener {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_first)
    txtNext.setOnClickListener(this)
}

override fun onClick(v: View) {
    when (v.id) {
        R.id.txtNext -> {
            //Code statements
        }
        else -> {
            // else condition
        }
    }
  }
}

15

একাধিক আইডি ব্যবহারের জন্য:

textview1.setOnClickListener(clickListener)
textview2.setOnClickListener(clickListener)

বেনাম শ্রেণি তৈরি করুন:

 private val clickListener: View.OnClickListener = View.OnClickListener { view ->
    when (view.id) {
        R.id.textview1-> { 
           Toast.makeText(this, "Clicked 1", Toast.LENGTH_SHORT).show()
        }
        R.id.textview2-> { 
           Toast.makeText(this, "Clicked 2", Toast.LENGTH_SHORT).show()
        }
    }
}

এটি আমার ক্ষেত্রে নালপয়েন্টার এক্সসেপশন ছুড়ে ফেলেছে। আপনি কি আমাকে সাহায্য করতে পারেন
মাশুকখান

আপনার ভিউ আইডিগুলি পরীক্ষা করুন, তাদের এক্সএমএল ফাইল রয়েছে তা নিশ্চিত করুন।
লুভনিশ মঙ্গা

তারা এক্সএমএলে উপস্থিত রয়েছে
মাশুকখান

আপনার উত্স শেয়ার করুন এক্সএমএল অন্তর্ভুক্ত।
লুভনিশ মঙ্গা

6

প্রথমে আপনাকে ভিউতে রেফারেন্স পেতে হবে (বলুন বোতাম, টেক্সটভিউ ইত্যাদি) এবং সেটঅনক্লিকলিস্টার () পদ্ধতিটি ব্যবহার করে রেফারেন্সটিতে একটি অনক্লিকলিস্টার সেট করতে হবে

// get reference to button
val btn_click_me = findViewById(R.id.btn_click_me) as Button
// set on-click listener
btn_click_me.setOnClickListener {
    Toast.makeText(this@MainActivity, "You clicked me.", Toast.LENGTH_SHORT).show()
}

পড়ুন Kotlin SetOnClickListener উদাহরণ সম্পূর্ণ Kotlin অ্যান্ড্রয়েড উদাহরণস্বরূপ যেখানে একটি বোতাম একটি কার্যকলাপ মধ্যে বর্তমান থাকে এবং OnclickListener বোতাম প্রয়োগ করা হয়। আপনি বাটনে ক্লিক করলে, সেটঅনলিক্লিকলিস্টার ব্লকের কোডটি কার্যকর করা হয়।

হালনাগাদ

ক্লাস ফাইলে নিম্নলিখিত আমদানি বিবৃতিটি অন্তর্ভুক্ত করে আপনি সরাসরি তার আইডির সাথে বাটনটি সরাসরি উল্লেখ করতে পারেন। ডকুমেন্টেশন

import kotlinx.android.synthetic.main.activity_main.*

এবং তারপরে বোতামটির জন্য

btn_click_me.setOnClickListener {
    // statements to run when button is clicked
}

পড়ুন অ্যান্ড্রয়েড স্টুডিও টিউটোরিয়াল


5

onClickListenerকোটলিনে যুক্ত করতে এই কোডটি ব্যবহার করুন

val button : Button = getView()?.findViewById<Button>(R.id.testButton) as Button
button.setOnClickListener {view ->
         Toast.makeText(context, "Write your message here", Toast.LENGTH_LONG).show()
    }
}


5

আমি এখানে প্রচুর পরামর্শ দেখতে পাচ্ছি, তবে এই সংগ্রহটি নীচে অনুপস্থিত।

button.setOnClickListener(::onButtonClicked)

এবং বর্তমান শ্রেণিতে আমাদের এই জাতীয় পদ্ধতি রয়েছে:

private fun onButtonClicked(view: View) {
     // do stuff
}

5

var tv = findViewById(R.id.tv) টেক্সটভিউ হিসাবে

    tv.setOnClickListener {
       val i = Intent(this@MainActivity, SecondActivity::class.java)
       startActivity(i)
       finish()
    }

দয়া করে এটি খুব সহজ ব্যবহার করুন (আইডি সেট করুন, শ্রোতার উপর ক্লিক করুন এবং একটি শ্রেণিকে অন্য শ্রেণিতে নেভিগেট করুন)
চন্দন কুমার

স্ট্যাক ওভারফ্লোতে স্বাগতম! দয়া করে এখানে আপনার উত্স কোডটি নিক্ষেপ করবেন না। সুন্দর হোন এবং আপনার উত্তরের একটি সুন্দর বিবরণ দেওয়ার চেষ্টা করুন, যাতে অন্যরা এটি পছন্দ করে এবং এটির উন্নতি করতে পারে। দেখুন: আমি কীভাবে ভাল উত্তর লিখব?
সানুন ןɐ কিউপি

4
    val button = findViewById<Button>(R.id.button)
    button.setOnClickListener {
        val intent = 
    Intent(this@MainActivity,ThirdActivity::class.java)
        intent.putExtra("key", "Kotlin")
        startActivity(intent)
    }

3
**i have use kotlin-extension so i can access directly by button id:**


btnSignIN.setOnClickListener {
            if (AppUtils.isNetworkAvailable(activity as BaseActivity)) {
                if (checkValidation()) {

                    hitApiLogin()
                }
            }
        }

3

একটি সহজ উপায় হ'ল ক্লিক শ্রোতার নিবন্ধন করা এবং ল্যাম্বডা এক্সপ্রেশন সহ একটি ক্লিক শ্রোতা তৈরি করা।

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    // click listener registered
    myButton.setOnClickListener(clickListener)
}

এবং বাস্তবায়ন clickListener:

private val clickListener: View.OnClickListener = View.OnClickListener { _ ->
    // do something here
}

_যদি কোনও নামটি ব্যবহার করার প্রয়োজন হয় তবে আপনি কোনও নাম দিয়ে প্রতিস্থাপন করতে পারেন। উদাহরণস্বরূপ, আপনাকে ক্লিক শ্রোতার আইডি চেক করতে হবে।

private val clickListener: View.OnClickListener = View.OnClickListener { view ->
    if(view.id == login.id) {
        // do something here
    }
}

2

এটি অর্জনের বিভিন্ন উপায় রয়েছে, যেমন এই প্রশ্নের বিভিন্ন উত্তর দ্বারা দেখানো হয়েছে।

শ্রোতাকে দেখার পক্ষে দেখার জন্য, আপনি জাভাতে যেমন পদ্ধতি ব্যবহার করেন তেমন:

button.setOnClickListener()

তবে কোটলিন শ্রোতা হিসাবে ল্যাম্বডাকে নির্ধারণ করা সহজ করে তোলে:

button.onSetClickListener {
    // Listener code
}

বিকল্পভাবে, আপনি যদি এই শ্রোতাকে একাধিক দর্শনের জন্য ব্যবহার করতে চান, তবে একটি ল্যাম্বডা এক্সপ্রেশন বিবেচনা করুন (একটি ল্যাম্বডা একটি ভেরিয়েবলের / রেফারেন্সের জন্য মানকে বরাদ্দ করা):

val buttonClickListener = View.OnClickListener { view ->
    // Listener code
}

button.setOnClickListener(buttonClickListener)
another_button.setOnClickListener(buttonClickListener)



1

আপনি কোটলিনে সেই অন্লিকলিস্টনার মতো ব্যবহার করেন

val fab = findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener {  
...
}


1

সমাধান এখানে। আপনার কোডটি এটি পছন্দ করবে:

button.setOnClickListener {
            //your code here
        }

কিছু যুক্ত করার দরকার নেই। নীচের মত:

val button = findViewById<Button>(R.id.Button)
button.setOnClickListener {

}

0

কাস্ট থেকে রোধ করতে প্রথমে বোতামটি সন্ধান করুন Viewনীচের <>মত:

val button = findViewById<Button>(R.id.button);

একবার আপনার উদাহরণটি হয়ে গেলে আপনি Buttonএখন ক্লিক শ্রোতাকে নিম্নরূপ সংযুক্ত করতে পারেন:

button.setOnClickListener {  
 // You code here
}


0

আমি এটি অর্জন করতে সবচেয়ে সহজ উপায়টি হ'ল কোটলিন অ্যান্ড্রয়েড এক্সটেনশনের মাধ্যমে।

আপনার অ্যাপ্লিকেশন / build.gradle এ

apply plugin: 'kotlin-android-extensions'

যদি আপনার বোতামটি 'বিটিএনএড' নামে পরিচিত, তবে আপনার খণ্ড বা ক্রিয়াকলাপে নিম্নলিখিতটি আমদানি করুন:

import kotlinx.android.synthetic.main.fragment_transactions.btnAdd

 override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    btnAdd.setOnClickListener {
        Toast.makeText(context , "Done", 10).show()
    }
}

0

আপনি যদি কোটলিনে পুরানো বেনামে অনুকরণ করতে চান তবে আমি খুঁজে পেয়েছি এটি পুরোপুরি কার্যকর হয়েছে।

 btnNewWay!!.setOnClickListener(object:View.OnClickListener {
    override fun onClick(v: View?) {
        //Your Code Here!
    }})

0

এর মতো বোতামে ক্লিকলিস্টনার যুক্ত করুন

    btUpdate.setOnClickListener(onclickListener)

আপনার ক্রিয়াকলাপে এই কোডটি যুক্ত করুন

 val onclickListener: View.OnClickListener = View.OnClickListener { view ->
        when (view.id) {
            R.id.btUpdate -> updateData()


        }
    }

-1

আপনি কোটলিনে এই জাতীয় সেটলিঙ্কলিস্টার ব্যবহার করতে পারেন

button.setOnClickListener(View.OnClickListener {        
       //code
})
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.