ฉันอยากรู้ว่าเราตั้งค่าพื้นฐานบนClickListenerใน Kotlin สำหรับการพัฒนา Android อย่างไร
view.setOnClickListener { ... }
มาก ดูเหมือนว่าทุกคนต่างกระตือรือร้นที่จะได้รับชื่อเสียง
ฉันอยากรู้ว่าเราตั้งค่าพื้นฐานบนClickListenerใน Kotlin สำหรับการพัฒนา Android อย่างไร
view.setOnClickListener { ... }
มาก ดูเหมือนว่าทุกคนต่างกระตือรือร้นที่จะได้รับชื่อเสียง
คำตอบ:
สมมติว่าคุณมี textView ให้คลิก
text_view.text = "Hello Kotlin";
text_view.setOnClickListener {
val intent = Intent(this@MainActivity, SecondActivity::class.java)
intent.putExtra("key", "Kotlin")
startActivity(intent)
}
ใช้โค้ดด้านล่าง
val textview = findViewById<TextView>(R.id.textview)
textview.setOnClickListener(clickListener)
val button = findViewById<Button>(R.id.button)
button.setOnClickListener(clickListener)
รหัสclickListener
val clickListener = View.OnClickListener {view ->
when (view.getId()) {
R.id.textview -> firstFun()
R.id.button -> secondFun()
}
}
มีห้าวิธีในการใช้ SetOnClickListener:
อันดับแรก:
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
}
}
}
}
ไชโย!
นี่คือตัวอย่างวิธีการใช้ onClickListener ใน Kotlin
button1.setOnClickListener(object : View.OnClickListener{
override fun onClick(v: View?) {
//Your code here
}})
วิธีที่ 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
}
}
}
}
สำหรับการใช้หลายรหัส:
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()
}
}
}
ก่อนอื่นคุณต้องได้รับการอ้างอิงถึง View (พูดปุ่ม TextView ฯลฯ ) และตั้งค่า OnClickListener เป็นข้อมูลอ้างอิงโดยใช้เมธอด setOnClickListener ()
// 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 Android ที่สมบูรณ์ซึ่งมีปุ่มอยู่ในกิจกรรมและใช้ OnclickListener กับปุ่ม เมื่อคุณคลิกที่ปุ่มโค้ดภายในบล็อก SetOnClickListener จะถูกเรียกใช้งาน
อัปเดต
ตอนนี้คุณสามารถอ้างอิงปุ่มได้โดยตรงกับ id โดยรวมคำสั่งนำเข้าต่อไปนี้ในไฟล์ Class เอกสารประกอบ .
import kotlinx.android.synthetic.main.activity_main.*
จากนั้นสำหรับปุ่ม
btn_click_me.setOnClickListener {
// statements to run when button is clicked
}
โปรดดูAndroid สตูดิโอสอน
ใช้รหัสนี้เพื่อเพิ่มonClickListener
ใน Kotlin
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()
}
}
เพียงแค่คุณรับ OnClickListener ใน kotlin
view1.setOnClickListener{
//body
}
ฉันเห็นคำแนะนำมากมายที่นี่ แต่คอลเล็กชันนี้ไม่มีสิ่งต่อไปนี้
button.setOnClickListener(::onButtonClicked)
และในคลาสปัจจุบันเรามีวิธีการดังนี้:
private fun onButtonClicked(view: View) {
// do stuff
}
var tv = findViewById(R.id.tv)
เป็น TextView
tv.setOnClickListener {
val i = Intent(this@MainActivity, SecondActivity::class.java)
startActivity(i)
finish()
}
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 as BaseActivity)) {
if (checkValidation()) {
hitApiLogin()
}
}
}
วิธีง่ายๆคือลงทะเบียน click listener และสร้าง click listener ด้วยนิพจน์แลมบ์ดา
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
}
คุณสามารถแทนที่_
ด้วยชื่อได้หากต้องการใช้มุมมองดังกล่าว ตัวอย่างเช่นคุณต้องตรวจสอบ id ของ click listener
private val clickListener: View.OnClickListener = View.OnClickListener { view ->
if(view.id == login.id) {
// do something here
}
}
มีหลายวิธีในการบรรลุเป้าหมายนี้ดังที่แสดงให้เห็นจากคำตอบที่หลากหลายสำหรับคำถามนี้
ในการกำหนดฟังก์ชั่นให้กับมุมมองคุณใช้วิธีการเดียวกับที่คุณทำใน Java:
button.setOnClickListener()
อย่างไรก็ตาม Kotlin ทำให้ง่ายต่อการกำหนด lambda ให้เป็นผู้ฟัง:
button.onSetClickListener {
// Listener code
}
หรือหากคุณต้องการใช้ตัวฟังนี้สำหรับหลายมุมมองให้พิจารณานิพจน์แลมบ์ดา (แลมบ์ดาที่กำหนดให้กับตัวแปร / ค่าสำหรับการอ้างอิง):
val buttonClickListener = View.OnClickListener { view ->
// Listener code
}
button.setOnClickListener(buttonClickListener)
another_button.setOnClickListener(buttonClickListener)
เพียงทำดังนี้:
button.setOnClickListener{doSomething()}
คุณใช้เช่นนั้น onclickListener ใน kotlin
val fab = findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener {
...
}
findViewById<Button>(R.id.signUp)?.setOnClickListener(
Toast.makeText(mActivity, "Button Clicked", Toast.LENGTH_LONG).show()
)
นี่คือวิธีแก้ปัญหา รหัสของคุณจะเป็นดังนี้:
button.setOnClickListener {
//your code here
}
ไม่ต้องเติมแต่งอะไร เช่นด้านล่าง:
val button = findViewById<Button>(R.id.Button)
button.setOnClickListener {
}
ก่อนอื่นให้ค้นหาปุ่มเพื่อป้องกันไม่ให้นักแสดงView
คุณสามารถใช้สิ่ง<>
ต่อไปนี้:
val button = findViewById<Button>(R.id.button);
เมื่อคุณมีอินสแตนซ์Button
แล้วคุณสามารถแนบตัวฟังคลิกได้ดังนี้:
button.setOnClickListener {
// You code here
}
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
}
วิธีที่ง่ายที่สุดที่ฉันรู้เพื่อให้บรรลุคือผ่าน Kotlin Android Extensions
บนแอปของคุณ / build.gradle
apply plugin: 'kotlin-android-extensions'
หากปุ่มของคุณเรียกว่า 'btnAdd' จากนั้นในส่วนหรือกิจกรรมของคุณจะนำเข้าสิ่งต่อไปนี้:
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()
}
}
หากคุณต้องการจำลองวิธีการไม่ระบุตัวตนแบบเก่าใน Kotlin ฉันพบว่ามันทำงานได้อย่างสมบูรณ์แบบ
btnNewWay!!.setOnClickListener(object:View.OnClickListener {
override fun onClick(v: View?) {
//Your Code Here!
}})
เพิ่ม clickListener บนปุ่มเช่นนี้
btUpdate.setOnClickListener(onclickListener)
เพิ่มรหัสนี้ในกิจกรรมของคุณ
val onclickListener: View.OnClickListener = View.OnClickListener { view ->
when (view.id) {
R.id.btUpdate -> updateData()
}
}
เพิ่มในไฟล์โมดูล build.gradle
android {
...
buildFeatures {
viewBinding true
}
}
สำหรับกิจกรรมเพิ่ม
private lateinit var binding: ResultProfileBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ResultProfileBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
}
เพิ่มเมื่อคลิก
binding.button.setOnClickListener { Log.d("TAG", "Example") }
คุณสามารถใช้ setOnClickListener เช่นนี้ใน Kotlin
button.setOnClickListener(View.OnClickListener {
//code
})
button.setOnClickListener(object : View.OnClickListener { override fun onClick(v: View) { /*do work*/} })
แล้วให้คำแนะนำเกี่ยวกับโค้ดที่สร้างขึ้นซึ่งเราควรแปลงเป็นแลมบ์ดา