Activity를 호출하는 코드를 정리합니다.
먼저 Activity를 하나 만듭니다. 이 녀석 이름이 DataCollectingListActivity라고 하겠습니다. 이 엑티비트를 호출하는 코드는 다음과 같습니다. 전달해줄 인자는 Intent에 전달해 줍니다.
val intent = Intent(this, DataCollectingListActivity::class.java) intent.putExtra("featureId", fid); startActivityForResult(intent, REQUEST_DATA_COLLECTION_LIST)
REQUEST_DATA_COLLECTION_LIST는 엑티비티를 띄우고 닫을때 해당 엑티비를 구분하기 위한 상수값인데요, 아래처럼 선언합니다.
private val REQUEST_DATA_COLLECTION_LIST = 100
다음은 DataCollectingListActivity에서 전달받은 인자를 처리하는 코드입니다.
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.data_collecting_list_activity) val fid = this.intent.getIntExtra("featureId", -1) Log.v("DIP2K", "받은 FID: $fid") .... }
엑티비티를 닫는 코드입니다. 닫을때 자신을 호출한 엑티비티에 결과를 전달할 수 있습니다.
val intent = Intent() intent.putExtra("data", "전달할 데이터") setResult(RESULT_OK, intent) finish()
setResult 함수를 통해 대화상자의 개념으로 사용자에게 확인(RESULT_OK)인지, 취소(RESULT_CANCEL)인지에 대한 의사전달이 가능합니다.
띄운 엑티비티가 결과값으로 전달한 내용을 읽는 코드입니다.
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (resultCode == RESULT_OK) { when (requestCode) { REQUEST_DATA_COLLECTION_LIST -> { Log.v("DIP2K", data!!.getStringExtra("data")!!) } } } }