728x90
startActivityForResult
Activity에서 다른 Activity를 실행하고 다시 돌아왔을 때 어떤 처리가 필요하다면 Activity를 실행할 때 startActivity가 아닌 startActivityForResult 메서드를 사용한다.
onActivityResult
startActivityForResult 메서드를 이용해 Activity를 실행하고 돌아오면 자동으로 onActivityResult 메서드가 호출된다.
여기에서 필요한 작업을 처리한다.
메인 액티비티
package com.example.onactivityresult
import android.app.Activity
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
val SECOND_ACTIVITY = 100
val THIRD_ACTIVITY = 200
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener {
val second_intent = Intent(this,SecondActivity::class.java)
// startActivity(second_intent)
startActivityForResult(second_intent,SECOND_ACTIVITY)
}
button4.setOnClickListener {
val third_intent = Intent(this,ThirdActivity::class.java)
startActivityForResult(third_intent,THIRD_ACTIVITY)
}
}
// activity code 가 reqeustCode에 저장
// resultCode 다른 activity에서 설정
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
SECOND_ACTIVITY -> {
textView.text = "SecondActivity에서 돌아왔습니다"
}
THIRD_ACTIVITY -> {
textView.text = "ThirdActivity에서 돌아왔습니다\n"
when (resultCode) {
Activity.RESULT_OK ->{
textView.append("결과 : OK")
}
// back 버튼은 cancel
Activity.RESULT_CANCELED ->{
textView.append("결과 : CANCELED")
}
Activity.RESULT_FIRST_USER ->{
textView.append("결과 : USER 1")
}
Activity.RESULT_FIRST_USER + 1 ->{
textView.append("결과 : USER 2")
}
}
}
}
}
}
third 액티비티
package com.example.onactivityresult
import android.app.Activity
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_third.*
class ThirdActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_third)
button3.setOnClickListener {
setResult(Activity.RESULT_OK)
finish()
}
button5.setOnClickListener {
setResult(Activity.RESULT_CANCELED)
finish()
}
button6.setOnClickListener {
setResult(Activity.RESULT_FIRST_USER)
finish()
}
button7.setOnClickListener {
setResult(Activity.RESULT_FIRST_USER + 1)
finish()
}
}
}
728x90
'안드로이드 > Activity' 카테고리의 다른 글
안드로이드 다른 애플리케이션의 액티비티 실행 (0) | 2022.06.09 |
---|---|
안드로이드 객체 전달 (0) | 2022.06.09 |
안드로이드 activity 데이터 전달 (0) | 2022.06.09 |
안드로이드 Activity 실행하기 (0) | 2022.06.09 |
안드로이드 Activity 생명주기 (0) | 2022.06.09 |