کار با button در زبان kotlin
همانطور که در جلسه ی گذشته آموزش دادیم شما یاد گرفتید تا یک پروژه اندروید با کاتلین ایجاد کنید. آفرین خوبه.
حالا بریم یکم حرفه ای تر کار کنیم !
خب قراره با کلیک بر روی یک button یا دکمه، یک متنی رو در خروجی اپ اندرویدی خودمون چاپ کنیم البته با زبان کاتلین.
روش اول
فایل MainActivity.kt باز کنید و کد های زیر رو کپی و در اون paste کنید:
package ir.chasboon.kotlinapp
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener{
val textView = findViewById<TextView>(R.id.textView)
textView.text="من کاتلین هستم!"
}
}
}
سپس فایل activity_main.xml رو باز کنید و کدهای زیر رو در اون paste کنید:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:layout_editor_absoluteY="81dp">
<TextView
android:id="@+id/textView"
android:layout_width="299dp"
android:layout_height="96dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="hi"
android:textAlignment="center"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="67dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="click"
app:layout_constraintTop_toBottomOf="@+id/textView"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteX="135dp" />
</android.support.constraint.ConstraintLayout>
خب پروژه رو اجرا کنید و می بینید در کادر textView متن "من کاتلین هستم" نمایش داده میشه.
تحلیل کد جاوا بالا
با این روش من یک id برای Button خودم تعریف کردم به اسم button (در فایل activity_main.xml).
در زبان کاتلین با کلمه کلیدی val میشه یک مقدار تعریف کرد و با کلمه کلیدی var میشه یک متغیر تعریف کرد.
bitton.setOnClickListener{
val textView = findViewById<TextView>(R.id.textView)
textView.text="من کاتلین هستم!"
}
با setOnClickListener یک دستور برای کلیک دکمه ی مورد نظر ایجاد کردم و گفتم هروقت روی دکمه دکمه ای که ID اون برابر بود با button کلیک شد بیا کدهای داخلش رو اجرا کن.
نکته: حتما این متد رو باید درون تابع onCreate تایپ کنید وگرنه کار نمی کنه.
خب یک راه دیگه هست به جز روش بالا. با این روش می تونید هرجا که خواستید برای کلیک روی دکمه کد بنویسید و حتما نباید در تابع onCreate باشه.
روش دوم
به قسمت propeties دکمه برید و خصیصه onClick دکمه رو بذارید BtnClick (در کد xml بالا تنظیم شده).
خب حالا کد زیر رو جایگزین کدهای فایل Main.Activity کنید:
package ir.chasboon.kotlinapp
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.View
import android.widget.TextView
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
fun BtnClick(v: View) {
val textView = findViewById<TextView>(R.id.textView)
textView.text= "chasboon.ir"
}
}
یک بار دیگه run کنید اپلیکیشن رو. بر روی دکمه کلیک کنید و می بینید کلمه ی "chasboon.ir" در خروجی در textView نمایش داده می شه.
تحلیل روش دوم
یک function یا تابع به نام BtnClick ساختم. دقت کنید اسم تابع باید هم نام با خصیصه onClick دکمه باشه. داخل تابع هم id آقای textView رو دادم.
بعد هم گفتم خصیصه text آقای textView رو برابر با متن chasboon.ir کن. به همین سادگی.
همچنین می توانید ویدیوهای آموزشی کاتلین را در اینجا مشاهده کنید:
سوالی بود کامنت کنید.