안드로이드 개발 질문/답변
(글 수 45,052)
OnBackPressed()를 호출하면 뒤로가기처럼 동작하는건 알겠는데요.
혹시 현재 화면에서 두번 앞으로 갈 수 있나요?
즉 A액티비티가 B를 호출하고 B가 C를 호출하고 C가 D를 호출한 경우
D의 버튼을 눌렀을 때 B로 가고 싶습니다.
Back을 한번 더 누르면 A로 가고 싶구요. 한번 더 누르면 종료하고 싶구요.
어떻게 하면 될까요?
2010.11.10 10:30:24
b->c->d에서 c가 d를 호출할때 startActivityForResult(Intent intent, int requestCode)를 이용하여 호출하세요.
그럼 어떤 방법으로든 d가 destory될때 c에서 onActivityResult (int requestCode, int resultCode, Intent data)가 호출됩니다.
여기서 첫번째 paramter가 위의 startActivityForResult()에서 두번째 파라메터로 설정한 값이니
onActivityResult()내부에서 switch()문을 이용해서 d의 종료를 구분하시면 됩니다.
그리고 두번 뒤로 돌아가기 위해서 d를 종료시키기전에 setResult()에 특정한 값을 설정하면
onActivityResult()의 두번째 파라메터에 그값이 설정되어 넘어오니 이값으로 구분해서 c를 finish()시켜주면
사용자 입장에서 두번 뒤로 돌아가는 것과 같아지게 됩니다.
그럼 어떤 방법으로든 d가 destory될때 c에서 onActivityResult (int requestCode, int resultCode, Intent data)가 호출됩니다.
여기서 첫번째 paramter가 위의 startActivityForResult()에서 두번째 파라메터로 설정한 값이니
onActivityResult()내부에서 switch()문을 이용해서 d의 종료를 구분하시면 됩니다.
그리고 두번 뒤로 돌아가기 위해서 d를 종료시키기전에 setResult()에 특정한 값을 설정하면
onActivityResult()의 두번째 파라메터에 그값이 설정되어 넘어오니 이값으로 구분해서 c를 finish()시켜주면
사용자 입장에서 두번 뒤로 돌아가는 것과 같아지게 됩니다.




단 BCD가 소혼님이 만드신 Activity였을 경우
startActivityResult(Intent) 로 실행하여 (C와 D를)
결과를 상위 엑티비티에서 OnActivityReusult로 받아서 결과 코드에 따라 finish() 시켜서 cascade 방식으로 종료 시킬 수 있습니다.