Intent

2021. 5. 27. 21:47

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)
    
728x90

BELATED ARTICLES

more