Android - Как достичь setOnClickListener в Котлине?
Я хотел знать, как мы устанавливаем базовый onClickListener в Kotlin для Android Development.
Ответы
Ответ 1
Предположим, что у вас есть textView, чтобы щелкнуть
text_view.text = "Hello Kotlin";
text_view.setOnClickListener {
val intent = Intent([email protected], SecondActivity::class.java)
intent.putExtra("key", "Kotlin")
startActivity(intent)
}
Ответ 2
Используйте ниже код
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()
}
}
Ответ 3
Вот пример того, как использовать onClickListener в Kotlin
button1.setOnClickListener(object : View.OnClickListener{
override fun onClick(v: View?) {
//Your code here
}})
Ответ 4
Метод 1:
txtNext.setOnClickListener {
val intent = Intent(applicationContext, SecondActivity::class.java)
startActivity(intent)
}
Метод 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 -> {
val intent = Intent(applicationContext, SecondActivity::class.java)
startActivity(intent)
}
else -> {
// else condition
}
}
}
}
Ответ 5
Для использования нескольких идентификаторов:
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
Используйте этот код для добавления 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()
}
}
Ответ 7
Просто вы можете получить OnClickListener в kotlin
view1.setOnClickListener{
//body
}
Ответ 8
Сначала вы должны получить ссылку на View (скажем, Button, 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([email protected], "You clicked me.", Toast.LENGTH_SHORT).show()
}
Обратитесь к Примеру Kotlin SetOnClickListener для полного Примера Kotlin Android, где кнопка присутствует в действии, и к ней применяется OnclickListener. Когда вы нажимаете на кнопку, код внутри блока SetOnClickListener выполняется.
Обновить
Теперь вы можете напрямую ссылаться на кнопку с ее идентификатором, включив следующую инструкцию импорта в файл класса. Документация
import kotlinx.android.synthetic.main.activity_main.*
а затем для кнопки
btn_click_me.setOnClickListener {
// statements to run when button is clicked
}
См. Учебник по Android Studio.
Ответ 9
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {
val intent =
Intent([email protected],ThirdActivity::class.java)
intent.putExtra("key", "Kotlin")
startActivity(intent)
}
Ответ 10
**i have use kotlin-extension so i can access directly by button id:**
btnSignIN.setOnClickListener {
if (AppUtils.isNetworkAvailable(activity as BaseActivity)) {
if (checkValidation()) {
hitApiLogin()
}
}
}
Ответ 11
Я вижу много предложений здесь, но в этой коллекции отсутствует следующее.
button.setOnClickListener(::onButtonClicked)
и в текущем классе у нас есть такой метод:
private fun onButtonClicked(view: View) {
// do stuff
}
Ответ 12
Простой способ - зарегистрировать прослушиватель щелчков и создать прослушиватель щелчков с лямбда-выражением.
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
}
}
Ответ 13
Существует несколько различных способов достижения этого, о чем свидетельствует множество ответов на этот вопрос.
Чтобы на самом деле назначить слушателю представление, вы используете те же методы, что и в Java:
button.setOnClickListener()
Тем не менее, Kotlin упрощает назначение лямбда в качестве слушателя:
button.onSetClickListener {
// Listener code
}
В качестве альтернативы, если вы хотите использовать этот прослушиватель для нескольких видов, рассмотрите лямбда-выражение (лямбда, присвоенное переменной/значению для ссылки):
val buttonClickListener = View.OnClickListener { view ->
// Listener code
}
button.setOnClickListener(buttonClickListener)
another_button.setOnClickListener(buttonClickListener)
Ответ 14
Просто сделайте как ниже:
button.setOnClickListener{doSomething()}
Ответ 15
var tv = findViewById(R.id.tv)
как TextView
tv.setOnClickListener {
val i = Intent([email protected], SecondActivity::class.java)
startActivity(i)
finish()
}
Ответ 16
button.setOnClickListener {
//write your code here
}
Ответ 17
Вы используете так, как onclickListener в kotlin
val fab = findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener {
...
}
Ответ 18
findViewById<Button>(R.id.signUp)?.setOnClickListener(
Toast.makeText(mActivity, "Button Clicked", Toast.LENGTH_LONG).show()
)
Ответ 19
Сначала найдите кнопку, чтобы предотвратить трансляцию из View
, вы можете использовать <>
следующим образом:
val button = findViewById<Button>(R.id.button);
Как только у вас есть экземпляр Button
, вы можете теперь присоединить прослушиватель кликов следующим образом:
button.setOnClickListener {
// You code here
}
Ответ 20
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
}
Ответ 21
Я знаю, что проще всего этого добиться с помощью Android-расширений Kotlin.
В вашем приложении /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()
}
}
Ответ 22
Если вы хотите смоделировать старый анонимный способ в Kotlin, я обнаружил, что это работает отлично.
btnNewWay!!.setOnClickListener(object:View.OnClickListener {
override fun onClick(v: View?) {
//Your Code Here!
}})
Ответ 23
Добавить clickListener на кнопку, как это
btUpdate.setOnClickListener(onclickListener)
добавить этот код в вашу деятельность
val onclickListener: View.OnClickListener = View.OnClickListener { view ->
when (view.id) {
R.id.btUpdate -> updateData()
}
}