[Android] Activity 호출하기

Activity를 호출하는 코드를 정리합니다.

먼저 Activity를 하나 만듭니다. 이 녀석 이름이 DataCollectingListActivity라고 하겠습니다. 이 엑티비트를 호출하는 코드는 다음과 같습니다. 전달해줄 인자는 Intent에 전달해 줍니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
val intent = Intent(this, DataCollectingListActivity::class.java)
intent.putExtra("featureId", fid);
startActivityForResult(intent, REQUEST_DATA_COLLECTION_LIST)
val intent = Intent(this, DataCollectingListActivity::class.java) intent.putExtra("featureId", fid); startActivityForResult(intent, REQUEST_DATA_COLLECTION_LIST)
val intent = Intent(this, DataCollectingListActivity::class.java)
intent.putExtra("featureId", fid);
startActivityForResult(intent, REQUEST_DATA_COLLECTION_LIST)

REQUEST_DATA_COLLECTION_LIST는 엑티비티를 띄우고 닫을때 해당 엑티비를 구분하기 위한 상수값인데요, 아래처럼 선언합니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
private val REQUEST_DATA_COLLECTION_LIST = 100
private val REQUEST_DATA_COLLECTION_LIST = 100
private val REQUEST_DATA_COLLECTION_LIST = 100

다음은 DataCollectingListActivity에서 전달받은 인자를 처리하는 코드입니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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")
....
}
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") .... }
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")

    ....
}

엑티비티를 닫는 코드입니다. 닫을때 자신을 호출한 엑티비티에 결과를 전달할 수 있습니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
val intent = Intent()
intent.putExtra("data", "전달할 데이터")
setResult(RESULT_OK, intent)
finish()
val intent = Intent() intent.putExtra("data", "전달할 데이터") setResult(RESULT_OK, intent) finish()
val intent = Intent()
intent.putExtra("data", "전달할 데이터")
setResult(RESULT_OK, intent)
finish()

setResult 함수를 통해 대화상자의 개념으로 사용자에게 확인(RESULT_OK)인지, 취소(RESULT_CANCEL)인지에 대한 의사전달이 가능합니다.

띄운 엑티비티가 결과값으로 전달한 내용을 읽는 코드입니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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")!!)
}
}
}
}
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")!!) } } } }
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")!!)
            }
        }
    }
}

답글 남기기

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