더 친절한 코틀린 앱프로그래밍 책에 있는 코드 입니다.
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>