Intent
Intent๋ ์์ฒญ์ผ๋ก
Activity์ Activity๊ฐ ์์ฌ์ํตํ ๋,
Android system๊ณผ App์ด ์์ฌ์ํตํ ๋ (์ ํ ๋ฑ ์์คํ ๊ณ ์ ๊ธฐ๋ฅ),
์ํธ ํฉ์ ํ์ ๋ค๋ฅธ App๊ณผ ๋ด App์ด ์์ฌ์ํตํ ๋ ์ฌ์ฉํ๋ค.
์ธํ ํธ์ ์ข ๋ฅ๋ก๋
1.์ ํํ ๋์์๊ฒ ์์ฒญํ๋ ๋ช ์์ ์ธํ ํธ์
2.ํ ์ ์๋ ๋์์๊ฒ ์์ฒญํ๋ ์์์ ์ธํ ํธ๋ก ๋๋๋ค.
์์ฒญ์ ์ข ๋ฅ๋ก๋
1.์ ๋ฌ๋ง ํ๋ ์์ฒญ๊ณผ
2.์ ๋ฌ ํ ๋ฆฌํด์ ๋ฐ๋ ์์ฒญ ๋๊ฐ์ง๋ก ๋๋๋ค.
1. ๋ช ์์ ์ธํ ํธ๋ก ํ๋ฉด ์ ํ
์ฐ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ฅ ํํ ์ฌ์ฉํ๋ Intent๋ก๋ ํ๋ฉด ์ ํ์ ์๋ก ๋ค ์ ์๋ค.
activity1์์ activity2๋ก ์ด๋ํ ๋ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํด์ฃผ๋ฉด ๋๋ค.
val intent = Intent(this@activity1, activity2::class.java)
startActivity(intent)
2. ์์์ ์ธํ ํธ๋ก ํ๋ฉด ์ ํ
์์์ ์ธํ ํธ์์๋ ๋์์ด ์๋ ํ๋์ ์ง์ ํ๋ค.
์๋์ ์์์์๋ ํ๋์ ๋ทฐ๋ก ์ง์ ํ๊ณ uri๋ฅผ parseํ์ฌ ํ๋ฉด์ ์ ํํ์๋ค.
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("http://m.naver.com"))
startActivity(intent)
1. ์ ๋ฌ๋ง ํ๋ ์์ฒญ
์ ๋ณด ์ ๋ฌ
์ ๋ณด๋ฅผ ์ ๋ฌํ ๋๋ putExtra๋ฅผ ์ด์ฉํ์ฌ key, value ํ์์ผ๋ก ์ ์ฅ ํ ์ ๋ฌํ๋ค.
val intent = Intent(this@Intent1, Intent2::class.java)
intent.putExtra("number1", 1)
intent.putExtra("number2", 2)
startActivity(intent)
๊ฐ์ ๊ธฐ๋ฅ์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก, apply๊ฐ ์๋ค.
apply๋ฅผ ์ฌ์ฉํ๋ฉด putExtra๋ฅผ ํ ๊ณณ์ ๋ชจ์๋๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์ฑ์ด ์ข์์ง๋ค.
val intent = Intent(this@Intent1, Intent2::class.java)
intent.apply{
this.putExtra("number1", 1)
this.putExtra("number2", 2)
}
startActivity(intent)
์ ๋ณด ํ์ธ
์ ํ๋ activity2์์ ํ์ธํ ๋๋ getExtra๋ฅผ ์ด์ฉํ์ฌ key๊ฐ์ ํตํด ํ์ธํ๋ค.
์ด๋ getIntExtra์ ๋๋ฒ์งธ ์ธ์๋ก ๋ํดํธ ๊ฐ์ ์ค์ ํ์ฌ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ๋ํดํธ ๊ฐ์ด ์ ์ฅ๋๋๋ก ํ๋ค.
val number1 = intent.getIntExtra("number1", 0)
val number2 = intent.getIntExtra("number2", 0)
2. ์ ๋ฌ ํ ๋ฆฌํด์ ๋ฐ๋ ์์ฒญ
์ ๋ณด ์ ๋ฌ
๋ฆฌํด์ ๋ฐ๋ ์์ฒญ์ผ๋ก ์ ๋ณด๋ฅผ ์ ๋ฌํ ๋
startActivity ๋์ startActivityForResult ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ด ๋ ๋๋ฒ์งธ ์ธ์๋ก ์์ฒญ์ ๊ตฌ๋ถํ ์ ์๋ Intent ์ฃผ์์ธ requestCode๋ฅผ ๋ฃ์ด์ค๋ค.
val intent = Intent(this@Intent1, Intent2::class.java)
intent.apply{
this.putExtra("number1", 1)
this.putExtra("number2", 2)
}
startActivityForResult(intent, 100)
์ ๋ณด ๋ฆฌํด
์ ๋ฌ๋ฐ์ ์ ๋ณด๋ฅผ ํ์ธํ๊ณ ๋ค์ ์ ๋ณด๋ฅผ ๋ฆฌํดํ ๋ setResult๋ฅผ ์ฌ์ฉํ๋ค.
์๋ฅผ ๋ค์ด ์ ๋ฌ๋ฐ์ number1๊ณผ number2์ ํฉ์ ๊ฒฐ๊ณผ๋ก ์ ๋ฌํ ๋ ์๋์ ๊ฐ์ด ์์ฑํด์ฃผ๋ฉด ๋๋ค.
val number1 = intent.getIntExtra("number1", 0)
val number2 = intent.getIntExtra("number2", 0)
val result = Intent()
result.putExtra("result", number1 + number2)
setResult(Activity.RESULT_OK, result)
finish()
result๋ผ๋ Intent๋ฅผ ๋ง๋ ํ Intent์ ๋ฆฌํดํ ์ ๋ณด๋ฅผ ๋ฃ์ด setResult๋ฅผ ํตํด ์ ๋ฌํ๋ค.
์ฌ๊ธฐ์ setResult์ ์ฒซ๋ฒ์งธ ์ธ์์ธ Activity.RESULT_OK๋ int ํํ์ ๊ฐ -1๋ก ์ ๋ณด๋ฅผ ์ ๋ฐ์์์ ์๋ฏธํ๋ค.
์ดํ activity๋ฅผ ์ข ๋ฃํ ๋ finish()๋ฅผ ์ด์ฉํ์ฌ ์ข ๋ฃํ๋ค.
๋ฆฌํด ํ์ธ
๋ฆฌํด์ ํ์ธํ ๋ onActivityResult๋ฅผ ์ด์ฉํ์ฌ ํ์ธํ๋ค.
์กฐ๊ฑด๋ฌธ์ ์ด์ฉํ์ฌ Intent ์ฃผ์์ธ requestCode๋ฅผ ํ์ธ ํ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค.
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?){
if(requestCode == 100){
val result = data?.getIntExtra("result", 0)
}
super.onActivityResult(requestCode, resultCode, data)
'๐ป๊ฐ๋ฐ > Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Framework ์ Library (0) | 2021.05.28 |
---|---|
Fragment ์ฌ์ฉํ๊ธฐ (0) | 2021.05.27 |
๋ทฐ๋ฐ์ธ๋ฉ (viewbinding) (0) | 2021.05.27 |
activity ์๋ช ์ฃผ๊ธฐ (0) | 2021.05.26 |
[XML] ์ฝ๋๋ก ์ด๋ฏธ์ง ํ์ผ ๋ง๋ค๊ธฐ (0) | 2021.05.26 |