๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Study/Android

[์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”ํ‹€๋ฆฐ] 8. ์‹ค์ „ํ”„๋กœ์ ํŠธ(1) - ๋น„๋งŒ๋„๊ณ„์‚ฐ๊ธฐ

์‹ค์ „ ํ”„๋กœ์ ํŠธ

์‹ค์Šต - ๋น„๋งŒ๋„ ๊ณ„์‚ฐ๊ธฐ

์ฃผ์š”๊ตฌ์„ฑ

- ๋ชธ๋ฌด๊ฒŒ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ํ™”๋ฉด๊ณผ ๋น„๋งŒ๋„ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํ™”๋ฉด์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ๋‘ ๊ฐœ ํ•„์š”ํ•จ

- ์ธํ…ํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„์„œ ๋‹ค๋ฅธ ํ™”๋ฉด์œผ๋กœ ์ „๋‹ฌํ•จ

- ConstraintLayout ๊ธฐ๋ฐ˜

 

 

1. res > values > color.xml

- ์•ก์…˜๋ฐ” ์ƒ‰์ƒ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ์ปฌ๋Ÿฌ ์ฝ”๋“œ ์ถ”๊ฐ€

- 16์ง„์ˆ˜๋กœ

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="black">#FF000000</color>
    <color name="white">#FFFFFFFF</color>

    <!--์ปฌ๋Ÿฌ ์ถ”๊ฐ€-->
    <color name="teal_700">#FF018786</color>
    <color name="green_700">#00584A</color>
</resources>

 

2. res > values > themes > themes.xml

-  <style name="Base.Theme.BmiCalculator" parent="Theme.Material3.DayNight.noActionBar ">์—์„œ .noActionBar ์ง€์šฐ๊ธฐ (์•ฑ ์‹คํ–‰ ์‹œ์ผฐ์„ ๋•Œ ์•ก์…˜ ๋ฐ”๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ)

- ์•ก์…˜๋ฐ” ์ƒ‰์ƒ ๋ฐ”๊พธ๊ธฐ ์ฝ”๋“œ ์ถ”๊ฐ€

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Base.Theme.BmiCalculator" parent="Theme.Material3.DayNight">
        <!-- Customize your light theme here. -->
        <!-- <item name="colorPrimary">@color/my_light_primary</item> -->

        <!--์ฝ”๋“œ ์ถ”๊ฐ€-->
        <item name="colorPrimary">@color/teal_700</item>
        <item name="colorPrimaryVariant">@color/green_700</item>
    </style>

    <style name="Theme.BmiCalculator" parent="Base.Theme.BmiCalculator" />
</resources>

 

3. activity_main.xml design๋ชจ๋“œ์—์„œ ์œ„์ ฏ ์ถ”๊ฐ€

- EditText 2๊ฐœ, Button 1๊ฐœ

 

4. activity_result.xml design๋ชจ๋“œ์—์„œ ์œ„์ ฏ ์ถ”๊ฐ€

- File > New > Activity > Empty View Activity ๋“ค์–ด๊ฐ€์„œ ์ƒ์„ฑ (์ด๋ฆ„: ResultActivity(xml ์ž๋™ ์ƒ์„ฑ๋จ))

- TextView 1๊ฐœ

 

5. res ์šฐํด๋ฆญ New > Vector Asset

- Clip art์—์„œ ์•„์ด์ฝ˜ ์„ ํƒ (๐Ÿ™‚๐Ÿ™๐Ÿ˜ฆ 3๊ฐ€์ง€ ์•„์ด์ฝ˜)

- ๊ฒฝ๋กœ: res > drawble

 

6. activity_result.xml design๋ชจ๋“œ์—์„œ ์œ„์ ฏ ์ถ”๊ฐ€

- Image 1๊ฐœ

- ์ถ”๊ฐ€ํ•œ ์ด๋ฏธ์ง€ ์ฐฝ ๋œธ

- ์ถ”๊ฐ€ํ•œ ์ด๋ฏธ์ง€ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€๋กœ ์„ค์ •

- ์ด๋ฏธ์ง€ ์•„์ด์ฝ˜ ์ƒ‰ ๋ฐ”๊พธ๊ธฐ: ์šฐ์ธก Attributes ์ฐฝ > All Attributes > tint

 

7. ์ฝ”ํ‹€๋ฆฐ ์ฝ”๋“œ ์ž‘์„ฑ - ์ธํ…ํŠธ๋กœ ํ™”๋ฉด ์ „ํ™˜

1) MainActivity.kt ์—์„œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๊ฒฐ๊ณผ ํ™”๋ฉด์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ์ฝ”๋“œ ์ž‘์„ฑ

- ์ฒซ ๋ฒˆ์งธ ํ™”๋ฉด์˜ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋‘ ๋ฒˆ์งธ ํ™”๋ฉด์ด ์ถœ๋ ฅ : ํ™”๋ฉด์„ ์ „ํ™˜ํ•˜๋ ค๋ฉด ์ธํ…ํŠธIntent๋ฅผ ์‚ฌ์šฉ

- ์ธํ…ํŠธ : ๋‹ค๋ฅธ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„์„œ ๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ์Œ

package com.example.bmicalculator

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button

class MainActivity : AppCompatActivity() {

    lateinit var resultButton: Button // ์ถ”ํ›„์— ์ดˆ๊ธฐํ™” ๋ณ€์ˆ˜ํƒ€์ž…

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        resultButton = findViewById<Button>(R.id.resultButton)

        resultButton.setOnClickListener {
            var intent = Intent(this, ResultActivity::class.java)
            startActivity(intent)
        }
    }
}

 

2) ์ด์ „ํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ์—… ๋„ค๋น„๊ฒŒ์ด์…˜

- app > manifests > AndroidManifest.xml

- 18๋ฒˆ์งธ ์ค„ android:parentActivityName=".MainActivity" ์ถ”๊ฐ€

โ‘  ํ”„๋กœ์ ํŠธ ์ฐฝ์—์„œ AndroidManifest.xml ํŒŒ์ผ์„ ๋”๋ธ”ํด๋ฆญํ•˜์—ฌ ์—ด๊ธฐ

โ‘ก ์—๋””ํ„ฐ ์ฐฝ์— xml ์ฝ”๋“œ๊ฐ€ ํ‘œ์‹œ๋˜๋Š”๋ฐ ๋‘ ๋ฒˆ์งธ ์•กํ‹ฐ๋น„ํ‹ฐ์—parentActivityName ์†์„ฑ ์ถ”๊ฐ€

โ‘ข ๋‘ ๋ฒˆ์งธ ํ™”๋ฉด์˜ ํˆด๋ฐ”์— ๋’ค๋กœ ๊ฐ€๊ธฐ ์•„์ด์ฝ˜์ด ํ‘œ์‹œ

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.BmiCalculator"
        tools:targetApi="31">
        <activity
            android:name=".ResultActivity"
            android:exported="false" 
            android:parentActivityName=".MainActivity" />
        <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>
    </application>

</manifest>

 

 

3) ์ธํ…ํŠธ์— ๋ฐ์ดํ„ฐ ๋‹ด๊ธฐ

โ‘  ์„ ์–ธํ•œ ๋‘๊ฐœ(ํ‚ค, ๋ชธ๋ฌด๊ฒŒ ์ž…๋ ฅ ์นธ)์˜ EditText ์ •์˜ํ•˜๊ณ 

โ‘ก ๋ ˆ์ด์•„์›ƒ์— ์ •์˜๋œ ์œ„์ ฏ ์—ฐ๊ฒฐ

โ‘ข ResultActivity๋กœ ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ ์ถ”์ถœํ•˜์—ฌ intent ๊ฐ์ฒด์— ์ €์žฅ

- putExtra ( ) - key์™€ ๊ฐ’value์˜ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ €์žฅ

package com.example.bmicalculator

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText

class MainActivity : AppCompatActivity() {

    lateinit var resultButton: Button // ์ถ”ํ›„์— ์ดˆ๊ธฐํ™” ๋ณ€์ˆ˜ํƒ€์ž…
    lateinit var heightEditText: EditText
    lateinit var weightEditText: EditText

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        resultButton = findViewById<Button>(R.id.resultButton)
        heightEditText = findViewById<EditText>(R.id.heightEditText)
        weightEditText = findViewById<EditText>(R.id.weightEditText)

        resultButton.setOnClickListener {
            var intent = Intent(this, ResultActivity::class.java)
            intent.putExtra("height", heightEditText.text.toString())
            intent.putExtra("weight", weightEditText.text.toString())
            startActivity(intent)
        }
    }
}

 

4) ๋น„๋งŒ๋„๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ (ResultActivity.kt)

โ‘  Intent๋กœ ๋ถ€ํ„ฐ height์™€ weight๋ฅผ ๋ฐ›์Œ

โ‘ก ํ‚ค๋ฅผ 100์œผ๋กœ ๋‚˜๋ˆˆ ์ œ๊ณฑ์„ ๋ชธ๋ฌด๊ฒŒ์—์„œ ๋‚˜๋ˆ„๋ฉด BMI๊ฐ’ ์ถœ๋ ฅ

โ‘ข ์ถœ๋ ฅ์„ ์œ„ํ•ด textView ์„ ์–ธ ํ›„ ์—ฐ๊ฒฐ

โ‘ฃ when์„ ์‚ฌ์šฉํ•˜์—ฌ BMI๊ฐ’์ด ํŠน์ • ๊ตฌ๊ฐ„์— ์žˆ์œผ๋ฉด ํ•ด๋‹นํ•˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œ

โ‘ค ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ์„ ์œ„ํ•ด imageView ์„ ์–ธ ํ›„ ์—ฐ๊ฒฐ

โ‘ฅBMI๊ฐ’์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ์ด๋ฏธ์ง€๊ฐ€ ๋‚˜์˜ค๋„๋ก when์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ๊ฐ„๋งˆ๋‹ค ์ด๋ฏธ์ง€๋ฅผ ๊ต์ฒด

package com.example.bmicalculator

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ImageView
import android.widget.TextView

class ResultActivity : AppCompatActivity() {

    lateinit var resultTextView: TextView
    lateinit var imageView: ImageView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_result)

        resultTextView = findViewById<TextView>(R.id.textView)
        imageView = findViewById<ImageView>(R.id.imageView)

        var height = intent.getStringExtra("height")!!.toInt()
        var weight = intent.getStringExtra("weight")!!.toInt()

        // BMI ๊ณ„์‚ฐ
        var bmi = weight / Math.pow(height/100.0, 2.0)

        // ๊ธ€์ž๋กœ ์ถœ๋ ฅ
        when {
            bmi >= 35 -> resultTextView.text = "๊ณ ๋„ ๋น„๋งŒ"
            bmi >= 30 -> resultTextView.text = "2๋‹จ๊ณ„ ๋น„๋งŒ"
            bmi >= 25 -> resultTextView.text = "1๋‹จ๊ณ„ ๋น„๋งŒ"
            bmi >= 23 -> resultTextView.text = "๊ณผ์ฒด์ค‘"
            bmi >= 18.5 -> resultTextView.text = "์ •์ƒ"
            else -> resultTextView.text = "์ €์ฒด์ค‘"
        }

        // ์ด๋ฏธ์ง€๋กœ ์ถœ๋ ฅ
        when {
            bmi >= 23 -> imageView.setImageResource(R.drawable.baseline_sentiment_very_dissatisfied_24)
            bmi > 18.5 -> imageView.setImageResource(R.drawable.baseline_sentiment_satisfied_alt_24)
            else -> imageView.setImageResource(R.drawable.baseline_mood_bad_24)
        }
    }
}

 

5) Toast ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ๋ฉ”์‹œ์ง€ ํ‘œ์‹œ

- ํ† ์ŠคํŠธ : ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๊ธฐ๋ฅผ ์‚ฌ์šฉ์‹œ ํ•˜๋‹จ์— ์ž ๊น ๋ณด์˜€๋‹ค ์‚ฌ๋ผ์ง€๋Š” ๋ฉ”์‹œ์ง€

// ์œ„ ์ฝ”๋“œ ์ƒ๋žต
import android.widget.Toast

class ResultActivity : AppCompatActivity() {
        // ResultActivity.kr ์ด๋ฏธ์ง€ ์ถœ๋ ฅ ์ฝ”๋“œ ์•„๋ž˜์— ์ž‘์„ฑ (์œ„ ์ƒ๋žต)
        Toast.makeText(this, "$bmi", Toast.LENGTH_SHORT).show()
    }
}

 

8. ์ฝ”ํ‹€๋ฆฐ ์ฝ”๋“œ ์ž‘์„ฑ - SharedPreference๋กœ ๋ฐ์ดํ„ฐ ์ €์žฅ

1) ๋ฐ์ดํ„ฐ ์ €์žฅ

- MainActivity.kt์— ํ‚ค์™€ ๋ชธ๋ฌด๊ฒŒ๋ฅผ ์ €์žฅํ•˜๋Š” ํ•จ์ˆ˜ ์ž‘์„ฑ : onCreateํ•จ์ˆ˜ ์•„๋ž˜ ์„ ์–ธ

- https://developer.android.com/training/data-storage/shared-preferences?hl=ko

โ‘  getPreferences() ๋ฉ”์†Œ๋“œ๋Š” ๊ณต์œ ํ™˜๊ฒฝ์„ค์ •(SharedPreferences) ํŒŒ์ผ ์ œ๊ณต ๊ณต์œ ํ™˜๊ฒฝ์„ค์ •ํŒŒ์ผ์— ์“ฐ๋ ค๋ฉด edit() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœํ•˜์—ฌ SharedPreferences.Editor ์ƒ์„ฑ

โ‘ก editor์— ํ‚ค, ๋ชธ๋ฌด๊ฒŒ ์นธ์— ์ž…๋ ฅ๋œ ๊ฐ’์„ apply() ๋ฉ”์†Œ๋“œ๋กœ ์ €์žฅ ํ•จ

โ‘ข [๊ฒฐ๊ณผ]๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋Š” ์‹œ์ ์— saveData()๋ฅผ ํ˜ธ์ถœ(ํ‚ค, ๋ชธ๋ฌด๊ฒŒ๋ฅผ ํŒŒ๋ผ๋ฉ”ํ„ฐ๋กœ ์ „์†ก)

class MainActivity : AppCompatActivity() {

   // ์ฝ”๋“œ ์ƒ๋žต

        resultButton.setOnClickListener {

            saveData(heightEditText.text.toString().toInt(), weightEditText.text.toString().toInt())
            var intent = Intent(this, ResultActivity::class.java)
            intent.putExtra("height", heightEditText.text.toString())
            intent.putExtra("weight", weightEditText.text.toString())
            startActivity(intent)
        }
    }

    private fun saveData(height:Int, weight:Int) {
        var pref = this.getPreferences(0)
        var editor = pref.edit()

        editor.putInt("KEY_HEIGHT", heightEditText.text.toString().toInt()).apply()
        editor.putInt("KEY_WEIGHT", weightEditText.text.toString().toInt()).apply()
    }
}

 

2) ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ ์˜ค๊ธฐ

- MainActivity.kt์— ํ‚ค์™€ ๋ชธ๋ฌด๊ฒŒ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜ ์ž‘์„ฑ : onCreateํ•จ์ˆ˜ ์•„๋ž˜ ์„ ์–ธ

โ‘  getPreferences() ๋ฉ”์†Œ๋“œ๋Š” ๊ณต์œ ํ™˜๊ฒฝ์„ค์ •(SharedPreferences) ํŒŒ์ผ ์ œ๊ณต height, weight ๋‘๊ฐœ์˜ ๋ณ€์ˆ˜์— ๊ณต์œ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์„ getInt() ๋ฉ”์†Œ๋“œ๋กœ ๊ฐ€์ ธ์˜ด

โ‘ก ๊ณต์œ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ํ‚ค์™€ ๋ชธ๋ฌด๊ฒŒ ๊ฐ’์ด 0์ด ์•„๋‹Œ ๊ฐ’์œผ๋กœ ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฉด ์ž…๋ ฅ ์นธ์— ์ €์žฅ๋œ ๊ฐ’์„ ํ‘œ์‹œํ•จ 

โ‘ข ์•ฑ ์‹คํ–‰ํ•˜์ž๋งˆ์ž loadData() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ด์ „ ๊ฐ’์„ ์„ค์ •ํ•จ

class MainActivity : AppCompatActivity() {

    lateinit var resultButton: Button // ์ถ”ํ›„์— ์ดˆ๊ธฐํ™” ๋ณ€์ˆ˜ํƒ€์ž…
    lateinit var heightEditText: EditText
    lateinit var weightEditText: EditText

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        resultButton = findViewById<Button>(R.id.resultButton)
        heightEditText = findViewById<EditText>(R.id.heightEditText)
        weightEditText = findViewById<EditText>(R.id.weightEditText)

        loadData()

		// resultButton.setOnClickListener ์ƒ๋žต

    }

    // saveData() ์ƒ๋žต

    private fun loadData() {
        var pref = this.getPreferences(0)
        var height = pref.getInt("KEY_HEIGHT", 0)
        var weight = pref.getInt("KEY_WEIGHT", 0)

        if(height != 0 && weight != 0) {
            heightEditText.setText(height.toString())
            weightEditText.setText(weight.toString())
        }
    }
}

 

๊ฒฐ๊ณผ

 

์ •๋ฆฌ

- ์ด๋ฏธ์ง€ ๋ทฐ์— ํ‘œ์‹œํ•  ์•„์ด์ฝ˜์€ ์—์…‹ ์ŠคํŠœ๋””์˜ค์—์„œ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ

- ์•กํ‹ฐ๋น„ํ‹ฐ ๊ฐ„ ํ™”๋ฉด ์ „ํ™˜ ๋ฐ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์„ ํ•˜๋Š” ๋ฐ ์ธํ…ํŠธ๋ฅผ ์‚ฌ์šฉ

- ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ ๋ฐ ๋ณต์›ํ•  ๋•Œ๋Š” SharedPreference๋ฅผ ์‚ฌ์šฉ

 

 

 


์‘์šฉ - ์ด๋ฆ„ ์ถ”๊ฐ€

 

 

package com.example.bmicalculator

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText

class MainActivity : AppCompatActivity() {

    lateinit var resultButton: Button // ์ถ”ํ›„์— ์ดˆ๊ธฐํ™” ๋ณ€์ˆ˜ํƒ€์ž…
    lateinit var heightEditText: EditText
    lateinit var weightEditText: EditText
    lateinit var nameEditText: EditText

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        resultButton = findViewById<Button>(R.id.resultButton)
        heightEditText = findViewById<EditText>(R.id.heightEditText)
        weightEditText = findViewById<EditText>(R.id.weightEditText)
        nameEditText = findViewById<EditText>(R.id.nameEditText)

        loadData()

        resultButton.setOnClickListener {

            saveData(heightEditText.text.toString().toInt(), weightEditText.text.toString().toInt())
            var intent = Intent(this, ResultActivity::class.java)
            intent.putExtra("name", nameEditText.text.toString())
            intent.putExtra("height", heightEditText.text.toString())
            intent.putExtra("weight", weightEditText.text.toString())
            startActivity(intent)
        }
    }

    private fun saveData(height:Int, weight:Int) {
        var pref = this.getPreferences(0)
        var editor = pref.edit()

        editor.putString("KEY_NAME", nameEditText.text.toString()).apply()
        editor.putInt("KEY_HEIGHT", heightEditText.text.toString().toInt()).apply()
        editor.putInt("KEY_WEIGHT", weightEditText.text.toString().toInt()).apply()
    }

    private fun loadData() {
        var pref = this.getPreferences(0)
        var name = pref.getString("KEY_NAME", "")
        var height = pref.getInt("KEY_HEIGHT", 0)
        var weight = pref.getInt("KEY_WEIGHT", 0)

        if(name != "" && height != 0 && weight != 0) {
            nameEditText.setText(name.toString())
            heightEditText.setText(height.toString())
            weightEditText.setText(weight.toString())
        }
    }
}

 

package com.example.bmicalculator

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast

class ResultActivity : AppCompatActivity() {

    lateinit var resultTextView: TextView
    lateinit var imageView: ImageView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_result)

        resultTextView = findViewById<TextView>(R.id.textView)
        imageView = findViewById<ImageView>(R.id.imageView)

        var name = intent.getStringExtra("name")
        var height = intent.getStringExtra("height")!!.toInt()
        var weight = intent.getStringExtra("weight")!!.toInt()

        // BMI ๊ณ„์‚ฐ
        var bmi = weight / Math.pow(height/100.0, 2.0)

        // ๊ธ€์ž๋กœ ์ถœ๋ ฅ
        when {
            bmi >= 35 -> resultTextView.text = "๊ณ ๋„ ๋น„๋งŒ"
            bmi >= 30 -> resultTextView.text = "2๋‹จ๊ณ„ ๋น„๋งŒ"
            bmi >= 25 -> resultTextView.text = "1๋‹จ๊ณ„ ๋น„๋งŒ"
            bmi >= 23 -> resultTextView.text = "๊ณผ์ฒด์ค‘"
            bmi >= 18.5 -> resultTextView.text = "์ •์ƒ"
            else -> resultTextView.text = "์ €์ฒด์ค‘"
        }

        // ์ด๋ฏธ์ง€๋กœ ์ถœ๋ ฅ
        when {
            bmi >= 23 -> imageView.setImageResource(R.drawable.baseline_sentiment_very_dissatisfied_24)
            bmi > 18.5 -> imageView.setImageResource(R.drawable.baseline_sentiment_satisfied_alt_24)
            else -> imageView.setImageResource(R.drawable.baseline_mood_bad_24)
        }

        Toast.makeText(this, "$name" + " : " + "$bmi", Toast.LENGTH_SHORT).show()
    }
}

 

 

 

'Study > Android' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”ํ‹€๋ฆฐ] 10. ์‹ค์ „ํ”„๋กœ์ ํŠธ(3) - ์ „์ž์•ก์ž  (0) 2023.07.10
[์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”ํ‹€๋ฆฐ] 9. ์‹ค์ „ํ”„๋กœ์ ํŠธ(2) - ์Šคํ†ฑ์›Œ์น˜  (0) 2023.07.09
[์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”ํ‹€๋ฆฐ] 7. ์œ„์ ฏ - ํ…์ŠคํŠธ๋ทฐ/์—๋””ํŠธํ…์ŠคํŠธ,๋ฒ„ํŠผ/์ปดํŒŒ์šด๋“œ๋ฒ„ํŠผ/์ด๋ฏธ์ง€๋ฒ„ํŠผ  (0) 2023.07.04
[์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”ํ‹€๋ฆฐ] 6. ๋ ˆ์ด์•„์›ƒ(3) - ๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ/์ปจ์ŠคํŠธ๋ ˆ์ธํŠธ ๋ ˆ์ด์•„์›ƒ(์ฒด์ด๋‹, ๊ฐ€์ด๋“œ๋ผ์ธ)/+ ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ํ™œ์šฉํ•˜๊ธฐ(์ž๋™์ €์žฅ, ์ฝ”๋“œ์ž๋™์™„์„ฑ, ๋””๋ฒ„๊น…)  (0) 2023.07.03
[์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”ํ‹€๋ฆฐ] 5. ๋ ˆ์ด์•„์›ƒ(2) - ๋ฆฌ๋‹ˆ์–ด ๋ ˆ์ด์•„์›ƒ/๋ ๋Ÿฌํ‹ฐ๋ธŒ ๋ ˆ์ด์•„์›ƒ/ํ…Œ์ด๋ธ” ๋ ˆ์ด์•„์›ƒ  (0) 2023.06.30