app개발/android

[Android] 액티비티 간 이동 시 데이터 전달

pa_songsong 2022. 3. 29. 09:59

액티비티간 이동시 데이터를 전달하는 방식으로 런처 함수를 직접 만들어서 해당 함수 내부에서 처리할 수 있습니다.

 

MainActivity

binding.uploadMemoBtn.setOnClickListener{
	//Main 화면 내 버튼에 intent 설정하기
	var intent = Intent(this, MemoEditActivity::class.java)
    //런처 시작 
    MemoEditActivityLauncher.launch(intent)
}

 

//액티비티가 돌아왔을 때 처리할 코드 작성 
private val MemoEditActivityLauncher : ActivityResultLauncher<Intent> = registerForActivityResult(
    ActivityResultContracts.StartActivityForResult()
){	
	//다시 메인으로 돌아왔을 때의 코드가 result_ok를 반환했다면
    if(it.resultCode == Activity.RESULT_OK){
    	//이전 화면에서의 데이터 반환
        val intent = it.data
        val returnTodo = intent!!.getStringExtra("todo").toString()
        binding.editImportantMemo.setText(returnTodo)
    }
}​

 

SubActivity

binding.saveBtn.setOnClickListener{
    val todo = binding.editTodo.text.toString().trim()
    val detail = binding.editDetail.text.toString().trim()

    if(todo.length != 0 && detail.length != 0){
        intent.putExtra("todo", todo)
        intent.putExtra("detail", detail)
        
        //MainActivity로 돌아가는 코드
        //첫 파라미터는 상태코드, 두번째는 intent
        setResult(RESULT_OK, intent);
        
        //액티비티 종료
        finish()
    }else{
        Toast.makeText(this, "빈칸 모두 입력해주세요.", Toast.LENGTH_SHORT).show()
    }                                       
}