๋ ์น์ ํ ์ฝํ๋ฆฐ ์ฑํ๋ก๊ทธ๋๋ฐ ์ฑ
์ ์๋ ์ฝ๋ ์
๋๋ค.
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>