A 액티비티에서 B액티비티로 이동하고 B액티비티의 결과를 A액티비티에서 받아와야 합니다..
그런데 startActivityForResult는 동작이 안됩니다..
어떤 방법을 대체해서 쓸수 있을까요..
startActivityForResult가 안되는건 정확한 내부 로직이 어떻게 되있는지는 모르겠지만.. 아무튼 탭액티비티 때문입니다..
탭 내부에서의 액티비티 전환문제때문에 예전에 인터넷에서 참고한 어떤분의 소스를 쓰고 있는데..
하여튼 사용이 안됩니다..
임시로 아주 더러운 꼼수를 쓰고있긴한데 이런게 너무 싫어서요 ㅠ
꼼수로 쓰고 있는 방법은 클래스 하나 만들고 static 변수를 만들어 여기에 결과를 저장해버리고..
A액티비티 onResume()에서 static 변수에 값이 있는지 없는지로 판단하는겁니다..
결과야 나오고.. 예전에 static 변수 사용할때 문제가 있다고 들었던거 같은데.. 일단 그냥 String 값 하나라 큰 문제 없을꺼라 생각하고 썼습니다..
이런 꼼수말고 다른방법 없을까요...
에휴.. 내부적으로 제대로 공부를 한적이 없으니 막힐때마다 꼼수만 늘어나네요..
덕분에 스파게티 코드만 만들어지고 ;;
startActivityForResult 뿐만 아니라 다양한 형태로 값을 받아올 수 있습니다.
예를들어 B에서 부모 액티비티로 특정 값을 날려준다던지요
검색해보면 다양한 형태로 많이 나올것으로 예상됩니다.
탭엑티비티 이므로 안먹는 것처럼 느껴지시는 겁니다.... 스타트 엑티비티를 어느 콘텍스트를 이용하여 사용했는지 잘 보시면 바로 답이 이 나올탠데 말입니다....
탭네에서 엑티비티가 옮겨다니는 원리는 엑티비티의 전환이 아니라 뷰의 전환입니다.
즉 탭네에서 참조되는 콘택스트는 탭의 최초 부모 엑티비티의 콘텍스트를 참조 하게 됩니다.
즉 startActivityForResult의 오버라이드도 부모 엑티비티에서 해주셔야 작동 합니다.
Ps. 그냥 개발자들이 너무 갇혀지내느것 같아... 너무 안쓰럽습니다.
프로젝트 진행하시면서 분명히 onbackpressed()를 구현 하셨을텐데.....
onbackpressed()도 부모의 엑티비티를 참조하여 재대로된 onbackpressed()가 구현이 안되었을 텐데....
이부분은 그냥 넘어가시고 startActivityForResult의 대한 질문이 나왔다는게.... 이부분을 해결 하셨다면.....
조금만 생각해보면 이미 해결한 문제 인데 말이죠...
혹 해결 안하시고 넘어 오셨다면.... 프로그램은 기초가 튼튼해야 뒤가 받혀줍니다.... 다짜고짜 너무 높은 산을 보시는건 아닌가 싶습니다.




Activity가 종료되는게 아니기 때문에 onActivityResult 메소드가 호출이 되지 않는게 아닐까요?
저도 생각 할 수 있는 방법은 static으로 정보를 저장하거나.. sharedPrefereces 정도겠네요...
그리고 정확히는 TabActivity는 더 이상 사용이 중지된 클래스 입니다. 이젠 사용하지 않는게 맞다고 봅니다.
대안으로 나오는 것은 Fragment 입니다.
http://developer.android.com/reference/android/app/TabActivity.html