작성
·
301
답변 1
0
안녕하세요, atg0614님!
질문해 주신 내용 "Permission Request Code 와 requestCode가 같은지 if문에서 확인하는 이유가 무엇인가요? " 에 대하여 답변드리겠습니다.
requestCode는 onRequestPermissionResult, onActivityResult 와 같이 다른 액티비티(를 비롯한 다양한 인텐트)를 확인하고 다시 돌아오는 경우에 쓰입니다.
그리고 액티비티에 하나만 구현하기 때문에 MainActivity A 에서 Activity B 로 갔다가 돌아오는지, Activity C로 갔다가 돌아오는지 확인하기 위함에 있습니다.
아래 예시처럼 requestCode를 사용하면 카메라를 갔다왔는지, 전화번호부에 갔다왔는지를 확인할 수가 있습니다! 퍼미션의 종류에도 여러가지가 있으니 각각 다른 requestCode를 준다면, requestCode에 따라 실행방법을 분리할 수도 있겠죠?
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (resultCode == Activity.RESULT_CANCELED) {
// code to handle cancelled state
}
else if (requestCode == CAMERA_REQUEST) {
// code to handle data from CAMERA_REQUEST
}
else if (requestCode == CONTACT_VIEW) {
// code to handle data from CONTACT_VIEW
}
}
답변이 도움이 되기를 바라겠습니다.
(추가로 할인 기간에 못 사셨다니 마음이 아픕니다 ㅜㅜ 완강하시고 code.with.joyce@gmail.com 으로 메일 하나 주세요 ^^)
마지막 질문을 깜빡했네요 ^^
@MainActivity 와 같은 어노테이션을 붙여주는 이유는 바로 this가 위치해 있는 곳에 따라 참조하는 값이 달라질 수도 있기 때문입니다. let,apply,with 과 같은 람다식이나 오브젝트 안에서 this 는 그 자신을 가리킬 수 있습니다.
아래 예시를 보고 한 번 이해해 보세요.
class MainActivity {
fun onCreate() {
val list = listOf("사과", "배", "바나나")
with (list) {
println(this) // >>> ["사과", "배", "바나나"]
println(this@MainActivity) // >>> MainActivity@2a54aff7
}
}
}
선생님 정말 빠른 답변 너무 감사드립니다.
단번에 이해했습니다.
onRequestPermissionResult, onActivityResult
는 하나만 구현해놓고 RequestCode에 따라서 다른 기능을 하게 만들어주는군요..
감사합니다.
첫 강의를 이 것으로 시작해서 모르는 부분이 나올 때 마다 구글링 열심히 해가면서 배워가고 있습니다. 좋은 강의 감사드립니다.
혹시 질문의 마지막에 있던 this에 붙은 @MainActivity 어노테이션에 대한 답변도 가능할까요 ?