1. آموزش گام به گام اندروید با زبان کاتلین Kotlin
  2. کار با دکمه و onClick در کاتلین

کار با button در زبان kotlin

همانطور که در جلسه ی گذشته آموزش دادیم شما یاد گرفتید تا یک پروژه اندروید با کاتلین ایجاد کنید. آفرین خوبه.

حالا بریم یکم حرفه ای تر کار کنیم cool !

خب قراره با کلیک بر روی یک 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 بالا تنظیم شده).

activity main onclick

خب حالا کد زیر رو جایگزین کدهای فایل 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 کن. به همین سادگی.

همچنین می توانید ویدیوهای آموزشی کاتلین را در اینجا مشاهده کنید:

آموزش اندروید با زبان کاتلین

سوالی بود کامنت کنید.

کار با دکمه و onClick در کاتلین - 3.8 از 5 بر اساس 150 رای

امتیاز کاربران

کار با دکمه و onClick در کاتلین
دیدگاه‌ها
ناصر ناصر 6 ماه پیش
سلام ی سوال داشتم، چطور میتونم با یک دکمه 2 تا اکتویتی باز کنم با فاصله زمانی 24 ساعت یا مثلا اگه امروز روش کلیک شد یه اکتویتی نشون بده و فردا که روش کلیک شد یه اکتیوتی دیگه باز بشه آیا همچين چیزی امکان پذیره؟
آرمان بابائی آرمان بابائی 6 ماه پیش
در برنامه‌نویسی همه چیز امکان پذیره. قطعا می‌شه. کمی جستجو کنید به جوابتون می‌رسید.
ripper ripper 11 ماه پیش
سلام من توی اندروید استدیو ک میخام ای دی های باتن های که ساختم رو توی قسمت کد نویسی معرفی کنم تا وقتی روش کلیک میشه دستورات اجرا کنه شناسایی نمیکنه.یعنی ایدی دکمه رو ک میدم ارور میده و نمیشناسه
محمد محمد 1 سال پیش
سلام چه زبانی برای ساخت اپلیکیشن راحت تر
آرمان بابائی آرمان بابائی 1 سال پیش
سلام. از نظر راحتی کاتلین نسبت به جاوا راحت تر هست و زمان یادگیری کمتری داره.
زضا زضا 2 سال پیش
سلام اقای بابائی وقتتون بخیر خسته نباشید من الان حدود 1 ماهی هست تصمیم گرفتم کاتلین رو شروع کنم برای پیش نیاز چندین شخصی ک برنامه نویسی میکردن راهنمایی کردن ک الگوریتم رو یاد بگیرم ،منم یاد گرفتم فقط تنها مشکلی ک الان دارم واسه اینکه بتونم سیستم ب adb کانکت بشه و بعد بتونم اندروید دیوایس یا شبیه ساز ناکس رو اندروید استودیو کانکک کنم یا اینکه از طریق دستورات cmd بتونم به ریشه اندروید در شبیه ساز ناکس دسترسی داشته باشم مشکل دارم و ناکس نه در اندروید استودیو و ن در cmd کانکت نمیشه حتی پورت رو هم درست متصل کردم وقتی دستورات زیرو میزنم adb devices adb shell root:android این گزینه رو نمیاره یه اسم دیگه داره ک اصلی هیچ ربطی به شبیه ساز و یا ریشه اصلی نداره بنظرتون چطوری میتونم مشکل رو رفع کنم و در اخر ممنون که راهنمایی میکنید
آرمان بابائی آرمان بابائی 2 سال پیش
برای همچنین سوال تخصصی باید سوالتون رو در قسمت بپرس سایت بیان کنید تا دوستان ببینن و بهتون کمک کنند.
محمد محمد 2 سال پیش
سلام . من میخوام بجای اندروید استودیو با intellij. بذنامه نویسی کنم . چطور میتونم شبیه ساز اندروید رو به intellij متصل کنم و ایا باید sdk. رو جدا نصب کنم ؟
آرمان بابائی آرمان بابائی 2 سال پیش
این دو IDE فرق چندانی باهم ندارن. پیشنهاد میکنم برای سادگی و همچنین تست سریع و روان تر از شبیه ساز Genymotion استفاده کنید.
متین متین 3 سال پیش
سلام بین جاوا و کاتلین کدوم بهتره؟ من برای برنامه نویسی اندروید و ای او اس و همین ساعت و.... میخوام فقط من 17سالمه و دنبال زبانی هستم که بتونم باهاش زندگی خودمو بگذرونم و سریع یاد بگیرم
آرمان بابائی آرمان بابائی 3 سال پیش
نمیشه گفت کدوم بهتره. ولی کاتلین هم سریع تر هست و هم یادگیری آسون تری نسبت به جاوا داره و اومده تا جای جاوا رو بگیره. من در دوره آموزشی ویدیویی کاتلین مزایای کاتلین رو نام بردم که می تونید ببینید.
کامیاب کامیاب 3 سال پیش
سلام خسته نباشید...ببخشید یه سوال تقریبا بی ربط...من به مشکل خوردم...ادیت تکس(plaintext) اضافه کردم ولی وقتی داخلش مینویسم بجای اینکه بره خط بعدی از صفحه میزنه بیرون..یعنی میخام بصورت خودکار وقتی خط تموم شد بره خط بعدی ...و هرچی میگردم گزینشو پیدا نمیکنم ..میشه راهنمایی کنید ؟
آرمان بابائی آرمان بابائی 3 سال پیش
سلام. سوالی دارید در قسمت پرسش پاسخ بنویسید تا بهتر و سریعتر پاسخ داده بشه. به این شکل عمل کنید: android:maxLines="20" این خط رو اضافه کنید به editText
رامین رامین 3 سال پیش
سلام.برای شروع برنامه نویسی کدوم برنامه رو به مبتدیا پیشنهاد میکنین؟جاوا!؟ کاتلین!؟ ری اکتیو!؟ و یا...!؟؟ کدومش راحتتره یاد گرفتنش برای اونایی که هیچ اطلاعی از برنامه نویسی ندارن و میخوان از اول شروع کنن؟؟
آرمان بابائی آرمان بابائی 3 سال پیش
سلام. خیلی سوال خوب و بجایی کردین. از اونجایی که کاتلین و جاوا فقط برای برنامه نویسی اندروید ایجاد نشدن و از این زبان ها در اکثر دستگاه ها( مانند اتومبیل، تلویزیون، ماشین لباسشویی، دستگاه خودپرداز بانک و موبایل) استفاده میشه پیچیدگی های خاص خودش رو در برنامه نویسی داره تا همگی دستگاه ها رو ساپورت کنه که همینطور در یادگیری سخت تر هست. اما ری اکت نیتو چون متمرکز بر روی پلتفرمهای موبایل هست، یادگیری آسون تر و ساده تری نسبت به کاتلین و اندروید داره. همچنین مقدماتی که برای شروع به یادگیری ری اکت نیتیو دارین اکما اسکریپت 6 هست که من آموزش اکما اسکریپت 6 رو به صورت رایگان دادم و می تونید قبل از شروع ری اکت نیتیو ابتدا اکما رو یاد بگیرید و بعد وارد یادگیری ری اکت بشید.
رامین رامین 3 سال پیش
ممنون جناب بابایی عزیز.طبق فرمایش شما شروع میکنم و پیش میرم.
آرمان بابائی آرمان بابائی 3 سال پیش
امیدوارم در راهی که قدم میذارید موفق باشید و همچنین ما پشتیبان شما هستیم.
کیمیا کیمیا 3 سال پیش
خیلی عالیه آموزش هاتون . موفق باشید.
آرمان بابائی آرمان بابائی 3 سال پیش
ممنون بابت فیدبک انرژی بخش شما.
شکوفه شکوفه 3 سال پیش
private val btnId = findViewById(R.id.button) as Button فهمیدم مشکل کجاست..باید این خط کدو داخل oncreat تعریف کنیم ن خارج از اون و البته بدون private :/
آرمان بابائی آرمان بابائی 3 سال پیش
بله کاملا حق با شماست. اگه دقت کرده باشید پروژه ای که من نوشتم برای تقریبا یکسال پیش هست و کاتلین دستخوش تغییراتی شده. من دوباره پروژه رو با اندروید استودیوی جدید و همچنین کاتلین جدید تست کردم و دیدم error می گیرم. بنابراین تصمیم گرفتم این پست رو آپدیت کنم. دوباره می تونید از این روشی که آپدیت شده استفاده کنید. ممنون از پیگیری شما دوست عزیز.
شکوفه شکوفه 3 سال پیش
Unable to instantiate activity ComponentInfo در مورد اینم سرچ کردم یعنی تنها خطی بود که تو logcat میشد چیزی ازش فهمید.. ولی به نتیجه نرسیدم گفته بودن داخل منیفست اکتیویتی رو رجیستر نکردی که رفتم دیدم انجام دادم این کارو
شکوفه شکوفه 3 سال پیش
val res = x.text.toString().toInt() + y.text.toString().toInt() سلام ...بابت اموزشتون ممنون، یه مشکلی داشتم، تو خط بالا زیر textخط میکشه و alt+enter هم که میزنم فایده ای نداره...
آرمان بابائی آرمان بابائی 3 سال پیش
به logcat در اندروید استویو برید و یه بار پروژه رو run کنید و بعد error رو بنوسید اینجا تا بررسی کنیم
شکوفه شکوفه 3 سال پیش
همینطور که میدونید تو محیط اندروید استدیو خطا رو دقیقا نمیگه چیه!! فقط میره رو خط کدی که ارور بهش مربوط میشه، میره رو خط ...Private val btnId=findView جایی که متغیر باتن رو تعریف کردیم
آرمان بابائی آرمان بابائی 3 سال پیش
گفتم که باید به logcat برید. اونجا خطا رو دقیقا میگه چیه.
شکوفه شکوفه 3 سال پیش
به logcat رفتم دیگه!! ن دقیقا نمیگه چیه!!! اگه میگفت ک خیلی خوب بود، ایمیلتونو لطف میکنید تا عکس بفرسم?
شکوفه شکوفه 3 سال پیش
خطی که ارور داخل logcat هست اینه که من چیزی نمیفمم ازش!! at com.example.shokoufe.kotlinproject.MainActivity.<init>(MainActivity.kt:12)
آرمان بابائی آرمان بابائی 3 سال پیش
شماره و ایمیل بنده در قسمت تماس با ما موجوده
شکوفه شکوفه 3 سال پیش
سلام ، ممنون از توضیحاتتون... این برنامه با این کدا مشکل داره .. شما توی ایکس ام ال ، ادیت تکست تعریف کردید ولی برا کدای جاوا تکست ویو
آرمان بابائی آرمان بابائی 3 سال پیش
دوست عزیز شما با دقت متن رو نخوندید.بنده دوتا editText گذاشتم و یک textView .من برنامه رو قبل از نوشتن یکبار اجرا میکنم و بعد در اختیار شما میذارم.
شکوفه شکوفه 3 سال پیش
سلام صبحتون بخیروخوشی...من تازه کوتلین رو با اموزش های شما شروع کردم، قبلا اندرویدو با جاوا کار کردم..برا همین به خودم شک کردم و کدای شما رو عینا کپی پست کردم ..باز هم کرش میکنه، بازم بررسی می کنم..ممنوون
آرمان بابائی آرمان بابائی 3 سال پیش
با سلام. خوشحالم که آموزشهای کاتلین رو با ما شروع کردید. یه نگاهی به آموزشهای ویدیویی من بندازین کمکتون می کنه.
sajad sajad 4 سال پیش
سلام سایتتون فوق العاده است چرا بخش دیدگاه ها نظرات جدید پایین تر هستن معمولا نظرات جدید بالاتر هستن
آرمان بابائی آرمان بابائی 4 سال پیش
ممنون از شما دوست عزیز
سید مهدی سید مهدی 4 سال پیش
درودو خدا قوت سپاس فراوان برای تلاش و لطفتون و آموزش های ساده و روانتون. همواره شاد و پیروز در پناه حق
آرمان بابائی آرمان بابائی 4 سال پیش
ممنون از شما دوست عزیز
نسیم نسیم 4 سال پیش
ممنون میشم ویدئو هم بزارید
آرمان بابائی آرمان بابائی 4 سال پیش
حتما دوست عزیز
رسول رسول 4 سال پیش
فیلمشو ک بززززارین عااااااالی میشه خیلی ممنون کالتین خخخخیلی از جاوا راحتره منتظر اموزش های بعدی البته از نوع فیلمش هسم ممنون
alireza alireza 4 سال پیش
عالیه ولی خیلی کم کم اموزش ها اپدیت میشود سریعتر باشید عشقید
علی علی 4 سال پیش
ادامه نداره آموزش خوبتون
آرمان بابائی آرمان بابائی 4 سال پیش
درود. با تشکر از شما.قطعا این آموزش ادامه داره و بهترین مرجع کاتلین به زبان پارسی خواهد بود.
سلام  سلام 4 سال پیش
آقا دستت درد نکنه خیلی عالیه
آرمان بابائی آرمان بابائی 4 سال پیش
خوشحالیم که مورد پسند قرار گرفته.

2021 © Copyright کليه حقوق مادی و معنوی براي چسبون محفوظ است و هرگونه کپی برداری پیگرد قانونی دارد.