앱 개발 with kotlin - BMI 계산기 만들기

안드로이드 앱의 페이지 생성을 위해서 필요한 3가지

  1. kotlin으로 구성된 Activity 파일
  2. 해당 Activity 파일의 Layout을 정의해주는 .xml파일
  3. 해당 Activity를 manifests에 추가 해주기

1. kotlin으로 구성된 Activity 파일

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)  //activity_main.xml 파일 layout을 보여줘라
        }
}
val heightEditText: EditText = findViewById(R.id.heightEditText)
val weightEditText = findViewById<EditText>(R.id.weightEditText)

layout에서 정의한 각 요소들을 가져다가 쓸 때 어떤 형인지 위의 코드 처럼 알려주어야 한다.

setOnClickListener, 인텐트(intent) 화면 전환(MainActivity -> ResultActivity)

// resultButton이 클릭 되었을 때 실행 
resultButton.setOnClickListener {
            val height: Int = heightEditText.text.toString().toInt()
            val weight: Int = weightEditText.text.toString().toInt()
            val intent = Intent(this, ResultActivity::class.java)   // 인텐트 선언            
     // 인텐트로 값 넘겨주기
            intent.putExtra("height", height) 
            intent.putExtra("weight", weight)
            startActivity(intent)
        }

인텐트(intent) 화면 전환(ResultActivity)

class ResultActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_result) 
        // MainActivity에서 넘겨준 값 받기
        val height = intent.getIntExtra("height", 0)
        val weight = intent.getIntExtra("weight", 0)
        Log.d("ResultActivity", "height : $height weight : $weight")
        }
 }

2. Layout을 정의해주는 .xml파일

LinearLayout으로 만들기

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical" // 수직으로 쌓음
    android:padding="16dp"
    tools:context=".MainActivity">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/height" // static한 값은 values > string.xml으로 따로 관리해주는 것이 편함
        android:textColor="@color/custom_black" // 색상도 values > color.xml으로 따로 관리해주는 것이 편함
        android:textSize="20sp"
        android:textStyle="bold" />
    <EditText
        android:id="@+id/heightEditText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:inputType="number" />
        .
        .
        .
    <Button
        android:id="@+id/resultButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp"
        android:text="@string/confirm" />
</LinearLayout>

3. Activity를 manifests에 추가하기

<activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
</activity>
<activity android:name=".ResultActivity" /> // 추가

좋은 웹페이지 즐겨찾기