Kotlin for Android Developmentで基本的なonClickListenerを設定する方法を知りたいと思いました。
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()
}
}
KotlinでonClickListenerを使用する方法の例です。
button1.setOnClickListener(object : View.OnClickListener{
override fun onClick(v: View?) {
//Your code here
})
方法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
}
}
}
}
複数のIDを使用する場合
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()
}
}
}
このコードを使用して、Kotlinに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()
}
}
単にあなたはkotlinでOnClickListenerを得ることができます
view1.setOnClickListener{
//body
}
最初に、ビューへの参照(Button、TextViewなど)を取得し、setOnClickListener()メソッドを使用してOnClickListenerを参照に設定する必要があります。
// 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()
}
ボタンがアクティビティに存在し、OnclickListenerがボタンに適用されるKotlin Androidの完全な例については、 Kotlin SetOnClickListenerの例 を参照してください。ボタンをクリックすると、SetOnClickListenerブロック内のコードが実行されます。
更新
これで、クラスファイルに次のimport文を含めることで、ボタンのIDを直接参照できます。 ドキュメント 。
import kotlinx.Android.synthetic.main.activity_main.*
そしてボタンのために
btn_click_me.setOnClickListener {
// statements to run when button is clicked
}
Android Studio Tutorial を参照してください。
ここにたくさんの提案がありますが、このコレクションには次のものがありません。
button.setOnClickListener(::onButtonClicked)
そして現在のクラスでは、次のようなメソッドがあります。
private fun onButtonClicked(view: View) {
// do stuff
}
**i have use kotlin-extension so i can access directly by button id:**
btnSignIN.setOnClickListener {
if (AppUtils.isNetworkAvailable(activity as BaseActivity)) {
if (checkValidation()) {
hitApiLogin()
}
}
}
以下のようにしてください。
button.setOnClickListener{doSomething()}
textViewとしてvar tv = findViewById(R.id.tv)
tv.setOnClickListener {
val i = Intent(this@MainActivity, SecondActivity::class.Java)
startActivity(i)
finish()
}
簡単な方法は、クリックリスナーを登録し、ラムダ式を使用してクリックリスナーを作成することです。
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を確認する必要があります。
private val clickListener: View.OnClickListener = View.OnClickListener { view ->
if(view.id == login.id) {
// do something here
}
}
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {
val intent =
Intent(this@MainActivity,ThirdActivity::class.Java)
intent.putExtra("key", "Kotlin")
startActivity(intent)
}
この質問に対するさまざまな答えが示すように、これを達成するにはいくつかの異なる方法があります。
リスナーを実際にビューに割り当てるには、Javaの場合と同じメソッドを使用します。
button.setOnClickListener()
しかしながら、Kotlinはラムダをリスナーとして割り当てることを簡単にします。
button.onSetClickListener {
// Listener code
}
あるいは、このリスナーを複数のビューに使用したい場合は、ラムダ式(参照用に変数/値に割り当てられたラムダ)を検討してください。
val buttonClickListener = View.OnClickListener { view ->
// Listener code
}
button.setOnClickListener(buttonClickListener)
another_button.setOnClickListener(buttonClickListener)
KotlinではonclickListenerのように使います。
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()
)
このようなボタンにclickListenerを追加する
btUpdate.setOnClickListener(onclickListener)
このコードをあなたの活動に追加してください
val onclickListener: View.OnClickListener = View.OnClickListener { view ->
when (view.id) {
R.id.btUpdate -> updateData()
}
}
最初にボタンを探します。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の古い匿名のやり方をシミュレートしたいのであれば、私はこれが完全にうまくいっているのを見つけました。
btnNewWay!!.setOnClickListener(object:View.OnClickListener {
override fun onClick(v: View?) {
//Your Code Here!
}})
私がそれを達成するために知っている最も簡単な方法はKotlin Android拡張機能を通してです。
App/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()
}
}