[Android/Kotlin] 액티비티 데이터 전달

SoyoungLee·2021년 6월 25일
1

안드로이드/코틀린

목록 보기
7/68
post-thumbnail
post-custom-banner

💌 액티비티 사이에 값 주고받기

💜 번들(Bundle)에 담아서 주고 받기

  • 번들(Bundle) : 인텐트 내부의 데이터 저장 공간
    키-값 으로 넣고, 꺼낼 때는 처음 입력한 키로 꺼내기 (ex/ Map)

1) 데이터 전달

val intent = Intent(this, SubActivity::class.java)
        intent.putExtra("key1","문자열 전달쓰")
        intent.putExtra("key2",2021)

2) 데이터 받기

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 : 결과 처리 후 액티비티가 넘겨주는 인텐트

📌 startActivityForResult 메서드 사용하기

  • 두번째 파라미터 - 어떤 버튼에서 호출됐는지 구분 하는 용도
  btn1.setOnClickListener {
            startActivityForResult(intent,100)
        }
  • requestCode로 구분
if(resultCode == Activity.RESULT_OK){
            when(requestCode){
                100 -> {
                    val message = data?.getStringExtra("returnValue")
                }
            }
        }
profile
Android Developer..+ iOS 슬쩍 🌱 ✏️끄적끄적,,개인 기록용 👩🏻‍💻
post-custom-banner

0개의 댓글