728x90
반응형

Intent 라는 단어의 사전적 의미는 의도, 요구, 의사 전달, 요청 이라는 뜻이다. 

안드로이드 앱 프로그래밍에서 Intent는 Activity와 Activity , Android System과 내 App(전화 ex.배달앱에서 전화바로 연결하는 것) , 다른 App과 내 App 연결(ex. 결제할 때 pay화면 연결) 할 때 사용한다. 예를 들어 버튼을 누르면 다른 새로운 화면(새로운 Activity)가 나오는 것을 intent로 처리를 할 수 있다. 요청의 종류에는 두 가지가 있다. 전달만 하는 요청이 있고 리턴을 받는 요청이 있다.

 

Intent는 지금 화면이 사라지고 새로운 화면을 불러오는 것이다. Intent를 코드 상으로 활용하려면 intent라는 클래스를 만들어주면 된다. 

var intent = Intent(this@Intent1, Intent2::class.java)

1. activity를 전환하려면 Intent에는 처음 변수에는 context(여기서는 Intent1), 두 번째 변수에는 이동할 대상 여기서는 Intent2가 된다.

- Context : context는 문맥을 의미한다. Activity가 가지고 있는 주변 정보라고 생각하면 된다. class가 가지고 있는 정보랑 유사하다. 여기서 this@Intent1이 아닌 this만 입력하여도 상관없다. 여기서는 가능하지만 다른 곳에서는 에러가 날 수 도 있으므로 context를 넣어야 하는 곳에는 this@(현재 Activity)를 넣어주자.

- ::class.java를 꼭 넣어줘야 Intent2라는 것을 알 수 있다.

 

2. Intent를 만들었으면 Intent를 보내야 한다. 만든 변수를 startActivity안에 넣어주자.

startActivity(intent)

 

Intent에 정보를 담아 보내는 방법 (Key, Value 방식으로 전달)

Intent1에서 보내주므로 Intent1에 putExtra를 해서 보내고, Intent2에서 getExtra함수를 통해 받으면 된다.

intent.putExtra("number",1)
val number1 = intent.getIntExtra("number1",0)

getIntExtra는 첫번째 파라미터는 찾는 key값, 두번째는 없을때 대비해서 default값을 넣어준다.

 

Intent2에 putExtra를 apply를 사용해 묶어서 사용할 수 있다.

intent2.apply
{
    this.putExtra("number1",1)
    this.putExtra("number2",2)
}

 

Intent2에서 Intent1으로 돌려보내기

1. Intent에 결과를 담는다.

val resultIntent= Intent()
resultIntent.putExtra("result",result)
setResult(Activity.RESULT_OK,resultIntent)

setResult에는 RESULT_OK랑 전달해줄 값을 순서대로 넣는다. RESULT_OK는 잘 전송한다는 뜻이다(숫자 적어주면 됨)

Activity를 종료하려면 finish()함수를 사용하면 된다. Intent2를 종료시켜 Intent1을 보여주면 된다.

 

2. Intent1에서 결과 받기

onActivityResult 함수를 override해준다. 

전달만 하는 요청은 startActivity()로 요청하고, 리턴을 받는 요청은 startActivityForResult이다.

startActivityForResult(intent2,200)

파라미터를 intent 넣어주고 requestcode를 넣어줘야 된다. Intent에 요청하는 것이 여러개 일수도 있기 때문에 구별하기 위해서 requestCode를 넣어준다. 이름을 숫자로 적어준다.

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {

        if(requestCode==200){
            Log.d("number",""+requestCode)
            Log.d("number",""+resultCode)
            var result = data?.getIntExtra("result",0)
            Log.d("number",""+result)
        }

        super.onActivityResult(requestCode, resultCode, data)
    }
728x90
반응형

'App > Android' 카테고리의 다른 글

RecyclerView  (0) 2021.08.25
Fragment  (0) 2021.08.23
첫 프로젝트 만들기  (0) 2021.03.07
안드로이드(Android) 개요와 설치  (0) 2021.03.03
Kotlin은 무엇일까 + Kotlin에서의 변수와 함수  (0) 2021.03.03

+ Recent posts