App의 구성은
 
TabActivity 에 ActivityGroup을 사용하고 있습니다.
 
TabActivity -> ActivityGroup -> A Activity(리스트뷰 Item Click) -> B Activity(상세 페이지)
 
-> (Back button) -> A Activity(리스트뷰 Item Click) -> B Activity 으로 페이지를 이동하는 과정입니다.
 
2.3 버전 까지는 정상적으로 작동이 되는데
 
그런데 4.0 이전버전(3.0은 테스트 안해 봤습니다 ^^;)에서는
 
B Activity 까지는 정상적으로 진행이 되는데 B Activity에서 Back 을 해서
 
A Activity 로 돌아오면 리스트가 클릭이 되지 않습니다.
 
ActivityGroup에서 Activity 시작은
 
public void startChildActivity(String Id, Intent intent) {
  
  Window window = getLocalActivityManager().startActivity(Id,
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
  
  if (window != null) {
   mIdList.add(Id);
   setContentView(window.getDecorView());
  }
  else{
   Log.w(TAG, "startChildActivity window Null !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
  }
 }
 
이고 "뒤로가기" 는
 
onBackPress()호출하고 manager에의해 finishFromChild()가 호출 되는 구조입니다.
 
@Override
   public void  onBackPressed  () {
       int length = mIdList.size();
       if ( length > 1) {
           Activity current = getLocalActivityManager().getActivity(mIdList.get(length-1));
           current.finish();
       }else{
             mIdList.clear();
             finish();// 최상위 Level의 경우 TabActvity를 종료해야 한다.
   }
 
@Override
 public void finishFromChild(Activity child) {
    
  int index = mIdList.size()-1;
   
  if (index < 1) {
   finish();
   return;
  }
  
  getLocalActivityManager().destroyActivity(mIdList.get(index), true);
  mIdList.remove(index);
  index--;
  
  String lastId = mIdList.get(index);
  
  //기존 Activity를 불러올 때 Activity 재시작 onCreate가 호출됨..
//---------
  
Intent lastIntent = getLocalActivityManager().getActivity(lastId).getIntent();
  Window newWindow = getLocalActivityManager().startActivity(lastId, lastIntent);
  setContentView(newWindow.getDecorView());
//------------

  // 기존 Activity를 불러올때 Activity 재시작 하지 않음 기존 생성되었던 view를 보여줌.
  Window newWindow = getLocalActivityManager().getActivity(lastId).getWindow();
  
setContentView(newWindow.getDecorView());
}
  
 
2.3 까지는 finishFromChild 에서 getActivity() 를 사용하여 View만 set해 주어도
 
리스트 뷰가 클릭 되는데 4.0에서는 View 만 셋팅해 주면 리스트가 클릭이 되지 않습니다.
 
4.0에서는 주석처리(//-------) 한 부분 처럼 startActivity를 사용하여
 
View를 셋팅 해주면 클릭 이벤트는 동작을 하는데.
 
기존에 B Activity로 이동하기 전에 보여주었던 View가 아닌
 
새로 생성한 View로 보여집니다.(당연한 이야기 이겠지만요.. onCreate() 호출 됨. )
 
4.0에서 기존 View를 유지 하면서 Click 이벤트가 동작 하도록 할 수는 없을까요??
 
 
p.s
3.0 이상 부터 TabActivity, ActvityGroup 이 권장 되지 않는 것으로 압니다
 
Fragment 를 사용하라고 하는데 요 몇일간 구글링으로 자료를 찾아 보았는데.
 
TabActivity 까지는 support v4로 어찌어찌 했는데..
 
그 다음 ActivityGroup 처럼 Activity를 관리하는 구조를 구현하는
 
부분에서 삽질을 하고 있습니다 ㅡㅡ;
 
도통 Group 관리하는 부분에서는 어떻게 해야할지 이해가 잘 안됩니다.
 
혹시 Frgment로 TabActivity+ActivityGroup 형태로 구현할 수 있는 방법을 아시는분 계시면
 
염치 없지만 lightfly77@gmail.com 로 예제 소스 요청해 봅니다. ^^;;