my repository

Android :: startActivityForResult ์•กํ‹ฐ๋น„ํ‹ฐ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ณธ๋ฌธ

IT/Android (Kotlin)

Android :: startActivityForResult ์•กํ‹ฐ๋น„ํ‹ฐ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ

hjin 2020. 6. 10. 01:19

๐Ÿ’ก startActivityForResult

 

startAcitivity๋Š” ํŠน์ • ์•กํ‹ฐ๋น„ํ‹ฐ๋กœ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ๋ผ๋ฉด,
startActivityForResult๋Š” ์ด๋™๋œ ์•กํ‹ฐ๋น„ํ‹ฐ๋กœ๋ถ€ํ„ฐ ์–ด๋– ํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ“ ์˜ˆ์ œ

RegisterActivity์—์„œ ํšŒ์›๊ฐ€์ž… ์™„๋ฃŒ ์‹œ LoginActivity๋กœ ๋Œ์•„์˜ฌ ๋•Œ

ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณตํ•œ id์™€ pw๊ฐ€ ์ž…๋ ฅ๋˜์–ด ์žˆ๋„๋ก ๊ตฌํ˜„ํ•˜๊ธฐ

 

1. LoginActivity

- ๊ฐ’์„ ๋ฐ›์•„์˜ค๊ณ ์žํ•˜๋Š” Activity๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. (์—ฌ๊ธฐ์„œ๋Š” RegisterActivity)

var intent = Intent(this, RegisterActivity::class.java)
startActivityForResult(intent, REQUEST_CODE)

REQUEST_CODE : ๋‚˜์ค‘์— ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ›์•„์˜ฌ ๋•Œ ์–ด๋–ค ์š”์ฒญ์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ›๊ฒŒ๋œ ๊ฐ’์ธ์ง€๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ

์ž„์˜๋กœ private val REQUEST_CODE = 100 ์œผ๋กœ ์„ ์–ธํ•ด์ฃผ์—ˆ๋‹ค.

 

2. RegisterActivity (ํ˜ธ์ถœ๋œ Acitivity)

var intent = Intent(this, LoginActivity::class.java)
intent.putExtra("id", et_id.text.toString())
intent.putExtra("pass", et_pass.text.toString())
setResult(RESULT_OK, intent)
finish()

(1) intent.putExtra(key, value) - ์ „๋‹ฌํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ’์„ ๋„˜๊ฒจ์ค€๋‹ค
(2) setResult() - RESULT_OK์™€ ๊ฐ’์ด ๋‹ด๊ธด intent๋ฅผ ์ „๋‹ฌ
(3) finish() - Activity๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ๋‹ค์‹œ LoginActivity๋กœ ๋Œ์•„๊ฐ

 

3. LoginActivity

- ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์š”์ฒญํ•œ ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ onActivityResult()๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

- 3๊ฐœ์˜ ์ธ์ž : requestCode, resultCode, data

  requestCode : 1๋ฒˆ์—์„œ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ๋„์šธ ๋•Œ ์ „๋‹ฌํ–ˆ๋˜ ์š”์ฒญ ์ฝ”๋“œ

  resultCode : ์ƒˆ๋กœ ๋„์šด ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ์ „๋‹ฌ๋œ ๊ฒฐ๊ณผ์˜ ์„ฑ๊ณต์—ฌ๋ถ€ (RESULT_OK, RESULT_CANCELED)

  data : ์ „๋‹ฌ๋ฐ›์€ ์ธํ…ํŠธ

// onActivityResult
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == REQUEST_CODE) {
        if (resultCode == Activity.RESULT_OK) {
            val id = data!!.getStringExtra("id")
            val pass = data!!.getStringExtra("pass")
            et_id.setText(id)
            et_pass.setText(pass)
            Login() // RegisterActivity์—์„œ ๋ฐ›์•„์™€ ์ž…๋ ฅ๋œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ๋กœ๊ทธ์ธ
        }
    }
}

2๋ฒˆ์—์„œ ๋ณด๋‚ธ String ํƒ€์ž…์˜ ๊ฐ’์„ getStringExtra(key)๋ฅผ ํ†ตํ•ด์„œ ๋ฐ›์•„์˜จ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๋กœ๊ทธ์ธ์„ ์œ„ํ•œ ์•„์ด๋””์™€ ํŒจ์Šค์›Œ๋“œ ์ž…๋ ฅ์ฐฝ(EditText)์— ๋ฐ›์•„์˜จ string์„ setText ํ•ด์ฃผ๋ฉด

ํšŒ์›๊ฐ€์ž… ์‹œ์— ์ž‘์„ฑํ–ˆ๋˜ ์•„์ด๋””์™€ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋‹ค์‹œ ์ž…๋ ฅํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.