๐Ÿ“App Developing/Kotlin ๊ฐ•์ขŒ

Bmi ์•ฑ ๋ฉ”๋ชจ

Hush 2022. 7. 24. 16:42

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

startActivity๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ๋„์› ์„ ๋•Œ ๋’ค๋กœ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์„ ํ™œ์šฉํ•˜์—ฌ ์ด์ „ ์•กํ‹ฐ๋น„ํ‹ฐ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜๋Š” ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ์ด์ „ ํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„์ฑŒ ์ˆ˜ ์žˆ๋Š” ๋‹จ์„œ๋Š” ํ™”๋ฉด ์–ด๋””์—๋„ ์—†๋‹ค.

์—… ๋„ค๋น„๊ฒŒ์ด์…˜์„ ๋งŒ๋“ค๋ฉด ์ƒ๋‹จ์— ์ด์ „ ํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ ์œ„ํ•œ ํ™”์‚ดํ‘œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์˜ manifest ํด๋” ๋‚ด์˜ xmlํŒŒ์ผ์„ ์—ด์ž.

ํ”„๋กœ์ ํŠธ์— ์ƒ์„ฑ๋œ ๋ชจ๋“  ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์•กํ‹ฐ๋น„ํ‹ฐ ํƒœ๊ทธ๋กœ ๋งŒ๋“ค์–ด์ ธ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

์—ฌ๊ธฐ์„œ ๋’ค๋กœ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์„ ํ‘œ์‹œํ•  ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ, ๋’ค๋กœ๊ฐ”์„๋•Œ ๋ณด์ผ ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ์ž์‹์œผ๋กœ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

<activity
    android:name=".ResultActivity"
    android:exported="false"
    android:parentActivityName=".MainActivity"/>

์˜ˆ์‹œ ์ฝ”๋“œ์—์„œ๋Š” ResultActivity์˜ ๋ถ€๋ชจ Activity๋กœ MainActivity๋ฅผ ์„ค์ •ํ•ด ์ฃผ์—ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜๊ฒŒ ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ„์˜ ์ƒํ•˜๊ด€๊ณ„๋ฅผ ์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

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

์ธํ…ํŠธ์— ๋Œ€์ดํ„ฐ๋ฅผ ๋‹ด์•„ ์ „๋‹ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ธํ…ํŠธ ๋ณ€์ˆ˜์˜ putExtra ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

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

putExtra(์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ์˜ ์ด๋ฆ„,  ๋ฐ์ดํ„ฐ) ์˜ ํ˜•์‹์œผ๋กœ ์ „๋‹ฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ผ ๋•Œ์—๋Š”

์ธํ…ํŠธ๋ณ€์ˆ˜.get์ž๋ฃŒํ˜•Extra(์ „๋‹ฌ๋ฐ›์„๋ฐ์ดํ„ฐ์ด๋ฆ„)

์˜ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ์ œ์—์„œ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

val height = intent.getStringExtra("height")?.toInt()
val weight = intent.getStringExtra("weight")?.toInt()

 

๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊บผ๋‚ด๊ธฐ

์•ฑ์ด ์ข…๋ฃŒ๋˜์–ด๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด ๋ณด๊ด€๋˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž.

Bmi์•ฑ์˜ MainActivity.kt ์— ๋ฉ”์„œ๋“œ๋กœ ๋งŒ๋“  ๋ฐ์ดํ„ฐ ์ €์žฅ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

private fun saveData(height: Int, weight: Int){
    val pref = PreferenceManager.getDefaultSharedPreferences(this)
    val editor = pref.edit()

    editor.putInt("KEY_HEIGHT", height)
        .putInt("KEY_WEIGHT", weight)
        .apply()
}

preference ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„ ์ €์žฅํ•˜๊ณ , ๊ทธ ๊ฐ์ฒด์˜ edit ๋ฉ”์„œ๋“œ๋ฅผ ๋ณ€์ˆ˜(editor)์— ์ €์žฅํ•œ๋‹ค.

editor ์˜ putInt ๋ฉ”์„œ๋“œ์— ๋ฐ์ดํ„ฐ ์ด๋ฆ„๊ณผ ๋ฐ์ดํ„ฐ๊ฐ’์„ ์ „๋‹ฌํ•˜์—ฌ ์ €์žฅํ•˜๊ณ  apply ๋ฉ”์„œ๋“œ๋กœ ์ €์žฅํ•ด์ฃผ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค.

 

๋‹ค์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž.

private fun loadData() {
    val pref = PreferenceManager.getDefaultSharedPreferences(this)
    val height = pref.getInt("KEY_HEIGHT", 0)
    val weight = pref.getInt("KEY_WEIGHT", 0)

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

๋™์ผํ•˜๊ฒŒ preference ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„ ์ €์žฅํ•œ ๋‹ค์Œ, ๊ฐ์ฒด์˜ get์ž๋ฃŒํ˜• ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ €์žฅ๋œ ๊ฐ’์„ ๋ฐ›์•„์˜จ๋‹ค.

๋ถˆ๋Ÿฌ์˜ฌ ๋ฐ์ดํ„ฐ ์ด๋ฆ„๊ณผ ํ•จ๊ป˜ ์ „๋‹ฌ๋˜๋Š” ์ธ์ˆ˜๋Š” ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ๊ฐ€์ ธ์˜ฌ default ๊ฐ’์ด๋‹ค.

์ดํ›„ ์ ์ ˆํ•œ ๊ฐ’๋“ค์„ returnํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์˜ˆ์‹œ ์ฝ”๋“œ์ฒ˜๋Ÿผ ๋ฐ”๋กœ ํ™œ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.