안녕하세요.
작업 중 문제가 생겨 글 올려봅니다.
TabActivity에 ActivityGroup을 이용하여 View를 Stack(List)에 넣고 빼며 관리하고 있습니다.
클래스 형태는 대충 이렇습니다.
1. MenuActivity extends TabActivity
1-x. (UserActivityGroup extends ActivityGroup) in MenuActivity
1-x-x. UserActivity use UserActivityGroup
UserActivity에서 갤러리에 사진을 선택하는 다음과 같은 작업을 하였습니다.
-----------------------------------------------------------------------------------------------------------------
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
getParent().startActivityForResult(Intent.createChooser(intent, "사진 선택"), 10);
-----------------------------------------------------------------------------------------------------------------
여기서 문제는 콜백 메소드인 onActivityResult가 호출되지 않는다는 점입니다.
처음엔 일반적인 형태로 호출하였으나 startActivityForResult(Intent.createChooser(intent, "사진 선택"), 10);
ActivityGroup을 이용할 경우엔 부모쪽으로 호출을 해야 한다는 검색 결과가 있어서 getParent()를 붙였는데 변화가 없네요.
어떤 블로그를 보면 ActivityGroup을 사용할 경우엔 불가능하다고 적혀있던데 정말 그런가요?
구글링 해보면 거의 대부분이 ActivityGroup을 상속 받고 있는 클래스에서 처리를 하라고 나오는데.
UserActivityGroup의 startActivityForResult까지는 호출되도 onActivityResult는 호출되지 않네요.
이틀째 이거저거 시도해보고 있는데 안되네요.ㅠ
많은 조언 좀 부탁드립니다. 감사합니다.
예전에 제가 고생한 문제가지고 고생하는거 같아서 달아드립니다 이글을 볼지는 모르겟지만...
NavigationGroup extends ActivityGroup 여기서 재정의 하신다음에
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("", "onActivityResult navigationGroup");
if(resultCode == RESULT_OK){
int index = ids.size()-1;
Log.d("size ", ids.size()+"");
if (index >= 0) {
Log.d("id", ids.get(index));
NavigationView act = (NavigationView)manager.getActivity(ids.get(index));
act.onActivityResult(requestCode, resultCode, data);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
NavigationView extends Activity 여기서 다시한번 재정의 하시면 됩니다.
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("", "onActivityResult navigationView");
super.onActivityResult(requestCode, resultCode, data);
}
tabactivity는 굳이 적을필요 없어서 안적었습니다.
activitygroup에서 관리되는 뷰가 NavgationView이며, NavigationGroup에서 해당 NavigationView에 전달해주기만 하면 됩니다.