[Kotlin]ํ•จ์ˆ˜/function

๋” ์นœ์ ˆํ•œ ์ฝ”ํ‹€๋ฆฐ ์•ฑํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฑ…์— ์žˆ๋Š” ์ฝ”๋“œ ์ž…๋‹ˆ๋‹ค.
This is code from the Friendlier Kotlin App Programming book

ํ•จ์ˆ˜ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.
This is an example of function.

์ด ์ฝ”๋“œ๋Š” ๋ทฐ๋ฐ”์ธ๋”ฉ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
This code does not use view binding.

Test : compileSdk = 34 targetSdk = 34

MainActivity.kt

package com.example.function1

import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat

class MainActivity : AppCompatActivity() {

    // ๋ทฐ๋ฐ”์ธ๋”ฉ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๊ฒฝ์šฐ
    // When not using view binding
    private lateinit var inputtext1: EditText
    private lateinit var inputtext2: EditText
    private lateinit var btn1 : Button
    private lateinit var btn2 : Button
    private lateinit var btn3 : Button
    private lateinit var txtview1:TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_main)
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }

        //-----------------------------------------
        btn1 = findViewById<Button>(R.id.button)
        btn2 = findViewById<Button>(R.id.button2)
        btn3 = findViewById<Button>(R.id.button3)
        inputtext1 = findViewById<EditText>(R.id.input1)
        inputtext2 = findViewById<EditText>(R.id.input2)
        txtview1 = findViewById<TextView>(R.id.textview1)
        val firstValue = inputtext1.text
        val secondValue = inputtext2.text

        btn1.setOnClickListener(){
            show("๋ฒ„ํŠผ์ด ํด๋ฆญ๋์–ด์š”!!\nThe button was clicked!!")
        }

        btn2.setOnClickListener(){

            if(firstValue.isEmpty() || secondValue.isEmpty()){
                txtview1.text = "๊ฐ’์„ ์ž…๋ ฅํ•˜์„ธ์š”\nPlease enter a value"
            }else{
                val firstStr = firstValue.toString()
                val secondStr = secondValue.toString()
                val first = firstStr.toInt()
                val second = secondStr.toInt()
                val result = add(first ,second)
                txtview1.text = "๊ฒฐ๊ณผresult: $result"
            }

        }
        btn3.setOnClickListener(){

            if(firstValue.isEmpty() || secondValue.isEmpty()){
                txtview1.text = "๊ฐ’์„ ์ž…๋ ฅํ•˜์„ธ์š”\nPlease enter a value"
            }else {
                val result = add(getFirst(), getSecond())
                txtview1.text = "๊ฒฐ๊ณผresult: $result"

                /* add(a=10, b=10) or ... */
                val result2 = add(a = 10)
                var result3 = sum(10, 20, 30)
            }
        }

    } // End onCreate function

    // vararg : variable arguments
    // ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜(์ธ์ˆ˜[argument])๋ฅผ ์“ธ ์ˆ˜ ์žˆ์Œ.
    // Multiple function arguments can be used.
    fun sum(vararg inputs:Int):Int{
        var output = 0
        for(num in inputs){
            output = output + num
        }
        return output
    }
    fun getFirst():Int{
        val firstStr = inputtext1.text.toString()
        return firstStr.toInt()
    }
    fun getSecond():Int{
        val secondStr = inputtext2.text.toString()
        return secondStr.toInt()
    }

    // :Int๋Š” ๋ฆฌํ„ด์˜ ๋ณ€์ˆ˜ ํ˜•
    // :Int is the return variable type.
    fun add(a:Int,b:Int=0):Int {
        return a + b
    }
    // ํ•จ์ˆ˜๋Š” onCreateํ•จ์ˆ˜ ๋ฐ–์—์„œ ๋งŒ๋“ค๊ฒƒ
    // You must create the function outside of the onCreate function.
    fun show(message:String?){
        println(message)
    }

}

active_main.xml

-xml design

-xml code

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textview1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="36dp"
        android:text="๊ฒฐ๊ณผresult"
        android:textSize="20sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.495"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button3"
        app:layout_constraintVertical_bias="0.057" />

    <EditText
        android:id="@+id/input2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:ems="10"
        android:inputType="numberSigned"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.502"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/input1" />

    <EditText
        android:id="@+id/input1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="60dp"
        android:ems="10"
        android:inputType="numberSigned"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="28dp"
        android:text="๋ณด์—ฌ์ฃผ๊ธฐShow"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/input2" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="28dp"
        android:text="๋”ํ•˜๊ธฐPlus"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="28dp"
        android:text="๋”ํ•˜๊ธฐํ•จ์ˆ˜Plus function"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button2" />

</androidx.constraintlayout.widget.ConstraintLayout>

Leave a Reply