본문 바로가기
Android

[코틀린] 액티비티와 인텐트

by _eunji_ 2022. 1. 27.

안드로이드 4대 컴포넌트는 액티비티, 서비스, 브로드캐스트 리시버, 콘텐트 프로바이더이다.

  • 액티비티 : 화면을 구성하는 가장 기본적인 컴포넌트
  • 서비스 : 백그라운드에서 동작하는 컴포넌트
  • 브로드캐스트 리시버 : 문자 메시지, 배터리, 네트워크 환경 변화 등 방송 신호를 받아서 처리하는 것
  • 콘텐트 프로바이더 : 응용 프로그램 사이 데이터를 공유하기 위한 컴포넌트

 

1. 액티비티 이동하기

액티비티란 쉽게 말해 안드로이드에서 눈에 보이는 화면을 의미한다.

인텐트(intent)란 안드로이드 4대 컴포넌트가 서로 데이터를 주고받기 위한 메시지 객체이다.

  • 명시적 인텐트 : 액티비티 이름을 명확하게 지정할 때 사용하는 방법
  • 암시적 인텐트 : 약속된 액션을 지정하여 안드로이드에서 제공하는 기종의 응용 프로그램을 실행하는 것

 

명시적 인텐트

버튼을 눌렀을 시 MainActivity에서 secondActivity로 이동하기 위해 intent를 생성하고 새로운 액티비티 화면을 띄우는 startActivity() 메서드를 이용해 액티비티 이동

class MainActivity : AppCompatActivity() {
   override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)

      button.setOnClickListener {
         val intent = Intent(this, secondActivity::class.java)
         startActivity(intent)  
      }
   }
}

*액티비티를 추가했을 시 manifests에 <application> 안에 <activity android:name=".secondActivity"></activity> 한 줄을 추가해야 된다.

 

 

암시적 인텐트

암시적 인텐트로는 전화 걸기, 웹 브라우저 열기, 구글 맵 열기, 메시지 보내기, 카메라 등이 있다.

// 웹 브라우저 열기
var intent = Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"))
startActivity(intent)

// 전화 걸기
var intent = Intent(Intent.ACTION_VIEW, Uri.parse("tel:119"))
startActivity(intent)

//구글 맵 열기
var intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://maps.google.com/maps?q="+37.554264+","+126.913598))
startActivity(intent)

 

 

2. 인텐트로 값 전달하기

액티비티가 전환될 때 putxxxExtra() 메서드를 통해 데이터를 intent에 포함하여 전달 가능하다.

/*MainActivity*/

     val intent = Intent(context, secondActivity::class.java)
     //intent.putExtra("key값","전달 할 data값")
     intent.putExtra("name","eunji")
     intent.putExtra("phone",""010-0000-0000")
     context.startActivity(intent)

값을 전달받을 액티비티에서 getStringExtra(), getIntExtra(), getCharExtra() 등 자료형에 따른 메서드를 사용하여 데이터를 받아온다.

/*secondActivity*/

 val intent = getIntent()
 //val key =intent.getStringExtra("key값").toString()
 val name =intent.getStringExtra("name").toString()
 val phone =intent.getStringExtra("phone").toString()

댓글