Ini mungkin populer karena Android Studio mengonversi Java menjadi button.setOnClickListener(object : View.OnClickListener { override fun onClick(v: View) { /*do work*/} })dan kemudian memberikan nasihat tentang kode yang dihasilkan sehingga kita harus mengubahnya menjadi lambda.
Joe Lapp
6
Kotlin sangat tidak intuitif. Tidak tahu mengapa Google berinvestasi begitu banyak di dalamnya
codezombie
2
Mengapa semua orang memposting jawaban yang sama dengan sedikit perbedaan? Jawabannya sederhana view.setOnClickListener { ... }. Sepertinya semua orang sangat ingin mendapatkan reputasi.
semua melihat dari dekat, "objek" tidak dalam tanda kurung kurawal, jelas. saya menyia-nyiakan sebagian waktu saya
M. Usman Khan
26
Ada lima cara untuk menggunakan SetOnClickListener:
Pertama:
button.setOnClickListener {// Do some work here}
Kedua:
button.setOnClickListener(object:View.OnClickListener{overridefun onClick(view:View?){// Do some work here}})
Ketiga:
button.setOnClickListener(View.OnClickListener{ view ->// Do some work here})
Keempat:
classMainActivity:AppCompatActivity(),View.OnClickListener{
lateinit var button :Buttonoverridefun onCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button = findViewById(R.id.button1)
button.setOnClickListener(this)}overridefun onClick(view:View?){when(view?.id){
R.id.button1->{// do some work here}}}}
Kelima:
classMainActivity:AppCompatActivity(){
lateinit var button :Buttonoverridefun 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}}}}
Ini melempar nullPointerException dalam kasus saya. Bisakah Anda membantu saya
MashukKhan
periksa id tampilan Anda, pastikan ada file xml.
Luvnish Monga
Mereka ada dalam xml
MashukKhan
Bagikan sumber Anda termasuk XML.
Luvnish Monga
6
Pertama, Anda harus mendapatkan referensi ke View (katakanlah Button, TextView, dll.) Dan setel OnClickListener ke referensi menggunakan metode setOnClickListener ()
// get reference to buttonval btn_click_me = findViewById(R.id.btn_click_me)asButton// set on-click listener
btn_click_me.setOnClickListener {Toast.makeText(this@MainActivity,"You clicked me.",Toast.LENGTH_SHORT).show()}
Lihat Contoh Kotlin SetOnClickListener untuk Contoh Kotlin Android lengkap di mana tombol ada dalam suatu aktivitas dan OnclickListener diterapkan ke tombol tersebut. Saat Anda mengklik tombol, kode di dalam blok SetOnClickListener dijalankan.
Memperbarui
Sekarang Anda dapat mereferensikan tombol secara langsung dengan id-nya dengan menyertakan pernyataan import berikut dalam file Class. Dokumentasi .
Gunakan kode ini untuk menambahkan onClickListenerKotlin
val button :Button= getView()?.findViewById<Button>(R.id.testButton)asButton
button.setOnClickListener {view ->Toast.makeText(context,"Write your message here",Toast.LENGTH_LONG).show()}}
tolong gunakan yang ini dengan sangat mudah (set id, klik listener dan navigasikan satu kelas ke kelas lain)
CHANDAN KUMAR
Selamat datang di Stack Overflow! Tolong jangan membuang kode sumber Anda di sini. Bersikaplah baik dan cobalah memberikan deskripsi yang bagus untuk jawaban Anda, sehingga orang lain akan menyukainya dan menyukainya. Lihat: Bagaimana cara menulis jawaban yang baik?
sɐunıɔ ןɐ qɐp
4
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {val intent =Intent(this@MainActivity,ThirdActivity::class.java)
intent.putExtra("key","Kotlin")
startActivity(intent)}
**i have use kotlin-extension so i can access directly by button id:**
btnSignIN.setOnClickListener {if(AppUtils.isNetworkAvailable(activity asBaseActivity)){if(checkValidation()){
hitApiLogin()}}}
Ada beberapa cara berbeda untuk mencapai ini, seperti yang ditunjukkan oleh variasi jawaban atas pertanyaan ini.
Untuk benar-benar menetapkan listener ke tampilan, Anda menggunakan metode yang sama seperti yang Anda lakukan di Java:
button.setOnClickListener()
Namun, Kotlin membuatnya mudah untuk menetapkan lambda sebagai pendengar:
button.onSetClickListener {// Listener code}
Alternatifnya, jika Anda ingin menggunakan listener ini untuk beberapa tampilan, pertimbangkan ekspresi lambda (lambda yang ditetapkan ke variabel / nilai untuk referensi):
val buttonClickListener =View.OnClickListener{ view ->// Listener code}
button.setOnClickListener(buttonClickListener)
another_button.setOnClickListener(buttonClickListener)
val saveButton:Button= findViewById(R.id.button_save)
saveButton.setOnClickListener{// write code for click event}
with view object
saveButton.setOnClickListener{
view ->// write code for click event}
button.setOnClickListener(object : View.OnClickListener { override fun onClick(v: View) { /*do work*/} })
dan kemudian memberikan nasihat tentang kode yang dihasilkan sehingga kita harus mengubahnya menjadi lambda.view.setOnClickListener { ... }
. Sepertinya semua orang sangat ingin mendapatkan reputasi.Jawaban:
Misalkan Anda memiliki textView untuk diklik
sumber
Gunakan kode di bawah ini
kode clickListener .
sumber
Berikut adalah contoh tentang cara menggunakan onClickListener di Kotlin
sumber
Ada lima cara untuk menggunakan SetOnClickListener:
Pertama:
Kedua:
Ketiga:
Keempat:
Kelima:
Bersulang!
sumber
Metode 1:
Metode 2:
sumber
Untuk menggunakan banyak id:
Buat kelas anonim:
sumber
Pertama, Anda harus mendapatkan referensi ke View (katakanlah Button, TextView, dll.) Dan setel OnClickListener ke referensi menggunakan metode setOnClickListener ()
Lihat Contoh Kotlin SetOnClickListener untuk Contoh Kotlin Android lengkap di mana tombol ada dalam suatu aktivitas dan OnclickListener diterapkan ke tombol tersebut. Saat Anda mengklik tombol, kode di dalam blok SetOnClickListener dijalankan.
Memperbarui
Sekarang Anda dapat mereferensikan tombol secara langsung dengan id-nya dengan menyertakan pernyataan import berikut dalam file Class. Dokumentasi .
dan kemudian untuk tombolnya
Lihat Tutorial Android Studio .
sumber
Gunakan kode ini untuk menambahkan
onClickListener
Kotlinsumber
Cukup Anda bisa mendapatkan OnClickListener di kotlin
sumber
Saya melihat banyak saran di sini, tetapi koleksi ini kehilangan yang berikut ini.
dan di kelas saat ini kami memiliki metode seperti ini:
sumber
var tv = findViewById(R.id.tv)
sebagai TextViewsumber
sumber
sumber
Cara sederhana adalah dengan mendaftarkan pemroses klik dan membuat pemroses klik dengan ekspresi lambda.
Dan terapkan
clickListener
:Anda bisa mengganti
_
dengan nama jika Anda membutuhkan view untuk menggunakannya. Misalnya, Anda perlu memeriksa id pemroses klik.sumber
Ada beberapa cara berbeda untuk mencapai ini, seperti yang ditunjukkan oleh variasi jawaban atas pertanyaan ini.
Untuk benar-benar menetapkan listener ke tampilan, Anda menggunakan metode yang sama seperti yang Anda lakukan di Java:
Namun, Kotlin membuatnya mudah untuk menetapkan lambda sebagai pendengar:
Alternatifnya, jika Anda ingin menggunakan listener ini untuk beberapa tampilan, pertimbangkan ekspresi lambda (lambda yang ditetapkan ke variabel / nilai untuk referensi):
sumber
Cukup lakukan seperti di bawah ini:
button.setOnClickListener{doSomething()}
sumber
sumber
Anda menggunakan onclickListener seperti itu di kotlin
sumber
sumber
Berikut solusinya. Kode Anda akan seperti ini:
Tidak perlu menambahkan apapun. seperti dibawah ini:
sumber
Pertama temukan tombolnya, untuk mencegah cast dari
View
Anda dapat menggunakan<>
sebagai berikut:Setelah Anda memiliki instance
Button
, sekarang Anda dapat melampirkan click listener sebagai berikut:sumber
sumber
Cara termudah yang saya tahu untuk mencapainya adalah melalui Ekstensi Android Kotlin.
Di app / build.gradle Anda
apply plugin: 'kotlin-android-extensions'
Jika tombol Anda disebut 'btnAdd', maka pada fragmen atau aktivitas Anda impor yang berikut ini:
import kotlinx.android.synthetic.main.fragment_transactions.btnAdd
sumber
Jika Anda ingin mensimulasikan cara anonim lama di Kotlin, saya menemukan ini berfungsi dengan sempurna.
sumber
Tambahkan clickListener pada tombol seperti ini
tambahkan kode ini dalam aktivitas Anda
sumber
Anda dapat menggunakan setOnClickListener seperti ini di Kotlin
sumber