[Android] Activity 호출하기

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")!!)
            }
        }
    }
}

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다