본문 바로가기

안드로이드앱 코딩_AndroidApp/안스_코틀린_쪼개기

파편21_Intent로 데이터 주고 받기

Intent (인텐트)

intent는 '의지, 의향, 의도, 목적'이라는 뜻이다.

 

컨텍스트의 기능을 사용하기 위해 Context 클래스에 있는 함수를 호출할 때는 직접 연결하지 않고 Intent에 넣어서 이것을 사용할 것이라는 '의도'를 시스템에 전달한다.

 

예를 들어 Activity를 실행할려면 Intent( ) 함수에 어떤 Activity(TargetActivity)를 실행할 것인지 알려주고 startActivity()함수로 실행할 수 있다.

 

val intent = Intent(this, TargetActivity::class.java)

startActivity(intent)

 

참고로 MainActivity는 자동으로 Intent를 등록하므로 실행하기 위해 따로 적을 필요가 없다.

 

Bundle (번들)

Intent는 데이터를 주고 받을 때 사용할 수도 있다.

Intent에는 Bundle이라는 데이터 저장 공간이 있다. 그러므로 번들에 데이터를 저장해서 주고 받을 수 있다.

onCreate()함수에 savedInstanceState라는 매개변수가 Bundle타입이므로 여기에서 이용하면 된다.

Intent에 값을 입력할 때는 Key와 Value을 조합하여 넣고 뺀다.

 

값을 넣을 때는 putExtra(Key, Value)을 사용한다.

값을 꺼낼 때 Value가 String(문자열) 이면 getStringExtra() 를 사용하고,

숫자(정수)면 getIntExtra(String name, int defaultValue)를 사용한다.

 

(예1)

val intent = Intent(this, TargetActivity::class.java)

intent.putExtra("Key1", "With Bundle")

intent.putExtra("Key2", 105)

startActivity(intent)

 

//TargetActivity에는

 

textView1.text = intent.getStringExtra("Key1")

textView2.text = "${intent.getIntExtra("Key2", 0)}"    //문자열변환에 문자열 템플릿 ${} 사용함

 

 

Intent 추가 실습

Intent를 사용해서 전화 다이얼을 호출하는 실습을 해보자.

 

연습 프로젝트를 하나 만들고 active_main.xml에 위와 같이 버튼을 하나 만든다.

onClick 속성 값에 makeCall (전화걸기)을 입력한다. 

버튼을 클릭하면 makeCall 함수를 실행하겠다는 뜻이다.

함수 이름은 마음대로 정하면 된다.

 

정상적으로 코딩하려면 onCreate()함수 안에 button.setOnClickListener 함수를 사용해야 하지만 여기서는 Intent 가 작동하는지 테스트하는 것이므로 onClick 속성에서 함수를 바로 호출하는 방법을 사용한다.

 

MainActivity에 makeCall 함수를 아래와 같이 만든다.

 

Intent()함수로 호출할 함수는 Intent에 있는 ACTION_DIAL 이라는 함수다. 

전달할 전화번호는 Uri.parse()함수에 String(문자열) 값으로 적는다.

 

실행하면 다음과 같이 전화번호가 입력된 상태로 나타난다.

만약 전화를 걸게 하려면 ACTION_DIAL (액션_전화기판) 을 ACTION_CALL (액션_전화하기)로 수정하면 된다.

 

 

또한 인터넷 사이트를 호출하려면 ACTION_VIEW (액션_보기)를 사용해서 Uri.parse()함수에 인터넷 주소를 적어서 전달하면 된다. 여기서는 코틀린 언어 홈페이지 주소를 적었다.

 

실행하면 인터넷 브라우저가 뜨고 홈페이지가 나타난다.

 

 

끝.

Wraven...