val intent = Intent(this, SubActivity::class.java)
intent.putExtra("key1","문자열 전달쓰")
intent.putExtra("key2",2021)
val value1 = intent.getStringExtra("key1")
// 아무런 값이 전달되지 않았을 때 디폴트 값 0 설정
val value2 = intent.getIntExtra("key2",0)
🤔 intent가 액티비티 기본 속성이기 때문에 전달된 인텐트는 바로 호출해서 사용 가능
1) 서브 액비비티가 종료시 호출 액티비티로 값 돌려주기
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sub)
// 결과 돌려줄 인텐트 생성 후 저장
val returnIntent = Intent()
// 값 담기
returnIntent.putExtra("returnValue",123)
// 값 전달
// setResult() 첫번째 파라미터 - 상태값, 두번째 파라미터 - 전달하려는 인텐트
setResult(Activity.RESULT_OK,returnIntent)
// 최종 전달
finish()
startActivity(intent) // 단순 데이터 전달 시
}
2) 메인 액티비티에서 값 돌려받기
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
// 돌려받은 resultCode가 정상인지 체크
if(resultCode == Activity.RESULT_OK){
val message = data?.getStringExtra("returnValue")
Toast.makeText(this, message,Toast.LENGTH_SHORT).show()
}
}
🤔 OnActivityResult() 메서드 구조
- requestCode : 요청 시에 메인 액티비티에서 입력하는 코드 startActivityForResult 메서드에 인텐트와 함께 입력해서 호출한 코드
- resultCode: 결과 처리 후 서브 액티비티에서 입력하는 코드(RESULT_OK/RESULT_CANCELED)
- data : 결과 처리 후 액티비티가 넘겨주는 인텐트
btn1.setOnClickListener {
startActivityForResult(intent,100)
}
if(resultCode == Activity.RESULT_OK){
when(requestCode){
100 -> {
val message = data?.getStringExtra("returnValue")
}
}
}